1 : <?php
2 : /**
3 : * Smarty Internal Plugin Templateparser
4 : *
5 : * This is the template parser.
6 : * It is generated from the internal.templateparser.y file
7 : * @package Smarty
8 : * @subpackage Compiler
9 : * @author Uwe Tews
10 : */
11 :
12 : /**
13 : * This can be used to store both the string representation of
14 : * a token, and any useful meta-data associated with the token.
15 : *
16 : * meta-data should be stored as an array
17 : */
18 1 : class TP_yyToken implements ArrayAccess
19 : {
20 : public $string = '';
21 : public $metadata = array();
22 :
23 : function __construct($s, $m = array())
24 : {
25 0 : if ($s instanceof TP_yyToken) {
26 0 : $this->string = $s->string;
27 0 : $this->metadata = $s->metadata;
28 0 : } else {
29 0 : $this->string = (string) $s;
30 0 : if ($m instanceof TP_yyToken) {
31 0 : $this->metadata = $m->metadata;
32 0 : } elseif (is_array($m)) {
33 0 : $this->metadata = $m;
34 0 : }
35 : }
36 0 : }
37 :
38 : function __toString()
39 : {
40 0 : return $this->_string;
41 : }
42 :
43 : function offsetExists($offset)
44 : {
45 0 : return isset($this->metadata[$offset]);
46 : }
47 :
48 : function offsetGet($offset)
49 : {
50 0 : return $this->metadata[$offset];
51 : }
52 :
53 : function offsetSet($offset, $value)
54 : {
55 0 : if ($offset === null) {
56 0 : if (isset($value[0])) {
57 0 : $x = ($value instanceof TP_yyToken) ?
58 0 : $value->metadata : $value;
59 0 : $this->metadata = array_merge($this->metadata, $x);
60 0 : return;
61 : }
62 0 : $offset = count($this->metadata);
63 0 : }
64 0 : if ($value === null) {
65 0 : return;
66 : }
67 0 : if ($value instanceof TP_yyToken) {
68 0 : if ($value->metadata) {
69 0 : $this->metadata[$offset] = $value->metadata;
70 0 : }
71 0 : } elseif ($value) {
72 0 : $this->metadata[$offset] = $value;
73 0 : }
74 0 : }
75 :
76 : function offsetUnset($offset)
77 : {
78 0 : unset($this->metadata[$offset]);
79 0 : }
80 : }
81 :
82 : /** The following structure represents a single element of the
83 : * parser's stack. Information stored includes:
84 : *
85 : * + The state number for the parser at this level of the stack.
86 : *
87 : * + The value of the token stored at this level of the stack.
88 : * (In other words, the "major" token.)
89 : *
90 : * + The semantic value stored at this level of the stack. This is
91 : * the information used by the action routines in the grammar.
92 : * It is sometimes called the "minor" token.
93 : */
94 : class TP_yyStackEntry
95 1 : {
96 : public $stateno; /* The state-number */
97 : public $major; /* The major token value. This is the code
98 : ** number for the token at this stack level */
99 : public $minor; /* The user-supplied minor token value. This
100 : ** is the value of the token */
101 : };
102 :
103 : // code external to the class is included here
104 :
105 : // declare_class is output here
106 : #line 12 "internal.templateparser.y"
107 : class Smarty_Internal_Templateparser#line 109 "internal.templateparser.php"
108 1 : {
109 : /* First off, code is included which follows the "include_class" declaration
110 : ** in the input file. */
111 : #line 14 "internal.templateparser.y"
112 :
113 : // states whether the parse was successful or not
114 : public $successful = true;
115 : public $retvalue = 0;
116 : private $lex;
117 : private $internalError = false;
118 :
119 : function __construct($lex, $compiler) {
120 : // set instance object
121 321 : self::instance($this);
122 321 : $this->lex = $lex;
123 321 : $this->smarty = Smarty::instance();
124 321 : $this->compiler = $compiler;
125 321 : $this->template = $this->compiler->template;
126 321 : $this->cacher = $this->template->cacher_object;
127 321 : $this->nocache = false;
128 321 : $this->prefix_code = array();
129 321 : $this->prefix_number = 0;
130 321 : }
131 : public static function &instance($new_instance = null)
132 : {
133 321 : static $instance = null;
134 321 : if (isset($new_instance) && is_object($new_instance))
135 321 : $instance = $new_instance;
136 321 : return $instance;
137 : }
138 :
139 : #line 142 "internal.templateparser.php"
140 :
141 : /* Next is all token values, as class constants
142 : */
143 : /*
144 : ** These constants (all generated automatically by the parser generator)
145 : ** specify the various kinds of tokens (terminals) that the parser
146 : ** understands.
147 : **
148 : ** Each symbol here is a terminal symbol in the grammar.
149 : */
150 : const TP_OTHER = 1;
151 : const TP_LDELSLASH = 2;
152 : const TP_LDEL = 3;
153 : const TP_RDEL = 4;
154 : const TP_XML = 5;
155 : const TP_PHP = 6;
156 : const TP_SHORTTAGSTART = 7;
157 : const TP_SHORTTAGEND = 8;
158 : const TP_COMMENTEND = 9;
159 : const TP_COMMENTSTART = 10;
160 : const TP_INTEGER = 11;
161 : const TP_MATH = 12;
162 : const TP_UNIMATH = 13;
163 : const TP_INCDEC = 14;
164 : const TP_OPENP = 15;
165 : const TP_CLOSEP = 16;
166 : const TP_OPENB = 17;
167 : const TP_CLOSEB = 18;
168 : const TP_DOLLAR = 19;
169 : const TP_DOT = 20;
170 : const TP_COMMA = 21;
171 : const TP_COLON = 22;
172 : const TP_DOUBLECOLON = 23;
173 : const TP_SEMICOLON = 24;
174 : const TP_VERT = 25;
175 : const TP_EQUAL = 26;
176 : const TP_SPACE = 27;
177 : const TP_PTR = 28;
178 : const TP_APTR = 29;
179 : const TP_ID = 30;
180 : const TP_EQUALS = 31;
181 : const TP_NOTEQUALS = 32;
182 : const TP_GREATERTHAN = 33;
183 : const TP_LESSTHAN = 34;
184 : const TP_GREATEREQUAL = 35;
185 : const TP_LESSEQUAL = 36;
186 : const TP_IDENTITY = 37;
187 : const TP_NONEIDENTITY = 38;
188 : const TP_NOT = 39;
189 : const TP_LAND = 40;
190 : const TP_LOR = 41;
191 : const TP_QUOTE = 42;
192 : const TP_SINGLEQUOTE = 43;
193 : const TP_BOOLEAN = 44;
194 : const TP_NULL = 45;
195 : const TP_AS = 46;
196 : const TP_ANDSYM = 47;
197 : const TP_BACKTICK = 48;
198 : const TP_HATCH = 49;
199 : const TP_AT = 50;
200 : const TP_ISODD = 51;
201 : const TP_ISNOTODD = 52;
202 : const TP_ISEVEN = 53;
203 : const TP_ISNOTEVEN = 54;
204 : const TP_ISODDBY = 55;
205 : const TP_ISNOTODDBY = 56;
206 : const TP_ISEVENBY = 57;
207 : const TP_ISNOTEVENBY = 58;
208 : const TP_ISDIVBY = 59;
209 : const TP_ISNOTDIVBY = 60;
210 : const TP_ISIN = 61;
211 : const TP_LITERALSTART = 62;
212 : const TP_LITERALEND = 63;
213 : const TP_LDELIMTAG = 64;
214 : const TP_RDELIMTAG = 65;
215 : const TP_PHPSTART = 66;
216 : const TP_PHPEND = 67;
217 : const YY_NO_ACTION = 421;
218 : const YY_ACCEPT_ACTION = 420;
219 : const YY_ERROR_ACTION = 419;
220 :
221 : /* Next are that tables used to determine what action to take based on the
222 : ** current state and lookahead token. These tables are used to implement
223 : ** functions that take a state number and lookahead value and return an
224 : ** action integer.
225 : **
226 : ** Suppose the action integer is N. Then the action is determined as
227 : ** follows
228 : **
229 : ** 0 <= N < self::YYNSTATE Shift N. That is,
230 : ** push the lookahead
231 : ** token onto the stack
232 : ** and goto state N.
233 : **
234 : ** self::YYNSTATE <= N < self::YYNSTATE+self::YYNRULE Reduce by rule N-YYNSTATE.
235 : **
236 : ** N == self::YYNSTATE+self::YYNRULE A syntax error has occurred.
237 : **
238 : ** N == self::YYNSTATE+self::YYNRULE+1 The parser accepts its
239 : ** input. (and concludes parsing)
240 : **
241 : ** N == self::YYNSTATE+self::YYNRULE+2 No such action. Denotes unused
242 : ** slots in the yy_action[] table.
243 : **
244 : ** The action table is constructed as a single large static array $yy_action.
245 : ** Given state S and lookahead X, the action is computed as
246 : **
247 : ** self::$yy_action[self::$yy_shift_ofst[S] + X ]
248 : **
249 : ** If the index value self::$yy_shift_ofst[S]+X is out of range or if the value
250 : ** self::$yy_lookahead[self::$yy_shift_ofst[S]+X] is not equal to X or if
251 : ** self::$yy_shift_ofst[S] is equal to self::YY_SHIFT_USE_DFLT, it means that
252 : ** the action is not in the table and that self::$yy_default[S] should be used instead.
253 : **
254 : ** The formula above is for computing the action when the lookahead is
255 : ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
256 : ** a reduce action) then the static $yy_reduce_ofst array is used in place of
257 : ** the static $yy_shift_ofst array and self::YY_REDUCE_USE_DFLT is used in place of
258 : ** self::YY_SHIFT_USE_DFLT.
259 : **
260 : ** The following are the tables generated in this section:
261 : **
262 : ** self::$yy_action A single table containing all actions.
263 : ** self::$yy_lookahead A table containing the lookahead for each entry in
264 : ** yy_action. Used to detect hash collisions.
265 : ** self::$yy_shift_ofst For each state, the offset into self::$yy_action for
266 : ** shifting terminals.
267 : ** self::$yy_reduce_ofst For each state, the offset into self::$yy_action for
268 : ** shifting non-terminals after a reduce.
269 : ** self::$yy_default Default action for each state.
270 : */
271 : const YY_SZ_ACTTAB = 889;
272 : static public $yy_action = array(
273 : /* 0 */ 272, 150, 134, 37, 134, 6, 28, 12, 257, 57,
274 : /* 10 */ 175, 176, 172, 196, 191, 189, 192, 194, 24, 24,
275 : /* 20 */ 137, 420, 48, 170, 223, 255, 258, 159, 162, 7,
276 : /* 30 */ 179, 253, 51, 55, 200, 206, 183, 181, 165, 157,
277 : /* 40 */ 34, 21, 19, 24, 174, 238, 238, 186, 184, 193,
278 : /* 50 */ 185, 4, 2, 8, 3, 9, 11, 100, 103, 129,
279 : /* 60 */ 35, 183, 181, 16, 182, 140, 27, 134, 250, 250,
280 : /* 70 */ 238, 134, 186, 184, 193, 185, 4, 2, 8, 3,
281 : /* 80 */ 9, 11, 60, 17, 31, 255, 258, 40, 183, 181,
282 : /* 90 */ 150, 97, 37, 108, 18, 38, 12, 242, 60, 186,
283 : /* 100 */ 184, 193, 185, 4, 2, 8, 3, 9, 11, 132,
284 : /* 110 */ 236, 115, 157, 143, 5, 20, 239, 89, 255, 258,
285 : /* 120 */ 35, 51, 55, 200, 206, 134, 41, 15, 157, 183,
286 : /* 130 */ 181, 175, 176, 172, 196, 191, 189, 192, 194, 129,
287 : /* 140 */ 186, 184, 193, 185, 4, 2, 8, 3, 9, 11,
288 : /* 150 */ 24, 218, 150, 35, 37, 24, 6, 13, 12, 152,
289 : /* 160 */ 61, 34, 230, 245, 158, 30, 17, 244, 232, 46,
290 : /* 170 */ 106, 130, 66, 21, 97, 128, 198, 238, 230, 230,
291 : /* 180 */ 7, 229, 168, 51, 55, 200, 206, 214, 198, 50,
292 : /* 190 */ 157, 230, 207, 243, 72, 167, 138, 229, 229, 147,
293 : /* 200 */ 144, 150, 84, 37, 207, 18, 220, 12, 217, 57,
294 : /* 210 */ 229, 60, 266, 118, 23, 188, 228, 150, 240, 37,
295 : /* 220 */ 137, 18, 142, 12, 59, 57, 225, 226, 62, 220,
296 : /* 230 */ 156, 217, 51, 55, 200, 206, 39, 90, 150, 157,
297 : /* 240 */ 37, 157, 18, 129, 12, 220, 60, 217, 51, 55,
298 : /* 250 */ 200, 206, 262, 267, 150, 157, 37, 136, 18, 42,
299 : /* 260 */ 12, 266, 60, 23, 24, 178, 17, 25, 219, 51,
300 : /* 270 */ 55, 200, 206, 133, 97, 220, 157, 217, 198, 156,
301 : /* 280 */ 29, 230, 220, 224, 217, 51, 55, 200, 206, 173,
302 : /* 290 */ 180, 238, 157, 117, 207, 233, 228, 150, 240, 37,
303 : /* 300 */ 229, 18, 208, 12, 60, 57, 213, 17, 42, 24,
304 : /* 310 */ 94, 198, 96, 150, 230, 97, 131, 18, 22, 12,
305 : /* 320 */ 247, 60, 202, 205, 211, 84, 113, 207, 51, 55,
306 : /* 330 */ 200, 206, 136, 229, 157, 157, 238, 198, 38, 54,
307 : /* 340 */ 230, 135, 270, 155, 51, 55, 200, 206, 260, 33,
308 : /* 350 */ 99, 157, 145, 207, 262, 230, 140, 203, 17, 229,
309 : /* 360 */ 263, 198, 50, 14, 230, 60, 97, 77, 134, 111,
310 : /* 370 */ 1, 154, 202, 205, 229, 84, 215, 207, 198, 50,
311 : /* 380 */ 250, 230, 239, 229, 76, 155, 161, 210, 188, 202,
312 : /* 390 */ 205, 134, 84, 259, 207, 157, 198, 49, 204, 230,
313 : /* 400 */ 229, 230, 71, 198, 50, 188, 230, 202, 205, 73,
314 : /* 410 */ 84, 268, 207, 31, 202, 205, 40, 84, 229, 207,
315 : /* 420 */ 229, 198, 50, 188, 230, 229, 17, 70, 265, 241,
316 : /* 430 */ 188, 163, 202, 205, 97, 84, 104, 207, 129, 198,
317 : /* 440 */ 50, 248, 230, 229, 256, 79, 249, 250, 188, 134,
318 : /* 450 */ 202, 205, 102, 84, 126, 207, 198, 50, 271, 230,
319 : /* 460 */ 32, 229, 74, 250, 155, 155, 188, 202, 205, 155,
320 : /* 470 */ 84, 177, 207, 43, 198, 50, 237, 230, 229, 134,
321 : /* 480 */ 78, 198, 50, 188, 230, 202, 205, 75, 84, 119,
322 : /* 490 */ 207, 24, 202, 205, 155, 84, 229, 207, 127, 198,
323 : /* 500 */ 50, 188, 230, 229, 246, 80, 251, 125, 188, 81,
324 : /* 510 */ 202, 205, 150, 84, 198, 207, 18, 230, 238, 134,
325 : /* 520 */ 60, 229, 222, 223, 254, 201, 188, 155, 134, 155,
326 : /* 530 */ 207, 136, 52, 134, 65, 155, 229, 198, 96, 91,
327 : /* 540 */ 230, 235, 87, 51, 55, 200, 206, 262, 202, 205,
328 : /* 550 */ 157, 84, 124, 207, 262, 198, 98, 240, 230, 229,
329 : /* 560 */ 220, 149, 217, 88, 171, 53, 202, 205, 264, 84,
330 : /* 570 */ 86, 207, 198, 98, 164, 230, 218, 229, 262, 141,
331 : /* 580 */ 262, 105, 92, 202, 205, 114, 84, 68, 207, 10,
332 : /* 590 */ 240, 166, 250, 237, 229, 198, 98, 169, 230, 261,
333 : /* 600 */ 187, 15, 212, 197, 218, 231, 202, 205, 146, 84,
334 : /* 610 */ 67, 207, 198, 98, 269, 230, 218, 229, 139, 56,
335 : /* 620 */ 227, 195, 148, 202, 205, 234, 84, 22, 207, 199,
336 : /* 630 */ 26, 160, 153, 58, 229, 45, 228, 216, 63, 221,
337 : /* 640 */ 155, 198, 112, 69, 230, 252, 36, 237, 198, 120,
338 : /* 650 */ 209, 230, 202, 205, 32, 84, 64, 207, 107, 202,
339 : /* 660 */ 205, 259, 84, 229, 207, 190, 198, 109, 256, 230,
340 : /* 670 */ 229, 256, 256, 198, 122, 256, 230, 202, 205, 256,
341 : /* 680 */ 84, 256, 207, 256, 202, 205, 256, 84, 229, 207,
342 : /* 690 */ 198, 101, 256, 230, 256, 229, 256, 256, 256, 256,
343 : /* 700 */ 256, 202, 205, 256, 84, 256, 207, 256, 256, 256,
344 : /* 710 */ 256, 256, 229, 256, 256, 256, 198, 47, 256, 230,
345 : /* 720 */ 256, 256, 256, 198, 93, 256, 230, 202, 205, 256,
346 : /* 730 */ 84, 256, 207, 256, 202, 205, 256, 84, 229, 207,
347 : /* 740 */ 256, 198, 123, 256, 230, 229, 256, 256, 198, 44,
348 : /* 750 */ 256, 151, 202, 205, 256, 84, 256, 207, 256, 202,
349 : /* 760 */ 205, 256, 84, 229, 207, 198, 110, 256, 230, 256,
350 : /* 770 */ 229, 256, 256, 256, 256, 256, 202, 205, 256, 84,
351 : /* 780 */ 256, 207, 256, 256, 256, 256, 256, 229, 256, 256,
352 : /* 790 */ 256, 198, 121, 256, 230, 256, 256, 256, 198, 116,
353 : /* 800 */ 256, 230, 202, 205, 256, 84, 256, 207, 256, 202,
354 : /* 810 */ 205, 256, 84, 229, 207, 256, 198, 95, 256, 230,
355 : /* 820 */ 229, 256, 256, 198, 256, 256, 230, 202, 205, 256,
356 : /* 830 */ 84, 256, 207, 256, 202, 205, 256, 85, 229, 207,
357 : /* 840 */ 198, 256, 256, 230, 256, 229, 256, 256, 256, 256,
358 : /* 850 */ 256, 202, 205, 256, 82, 256, 207, 256, 256, 256,
359 : /* 860 */ 256, 256, 229, 256, 256, 256, 198, 256, 256, 230,
360 : /* 870 */ 256, 256, 256, 256, 256, 256, 256, 202, 205, 256,
361 : /* 880 */ 83, 256, 207, 256, 256, 256, 256, 256, 229,
362 : );
363 : static public $yy_lookahead = array(
364 : /* 0 */ 4, 11, 25, 13, 25, 15, 29, 17, 30, 19,
365 : /* 10 */ 31, 32, 33, 34, 35, 36, 37, 38, 3, 3,
366 : /* 20 */ 30, 69, 70, 71, 72, 12, 13, 19, 50, 39,
367 : /* 30 */ 14, 18, 42, 43, 44, 45, 40, 41, 30, 49,
368 : /* 40 */ 61, 26, 26, 3, 4, 30, 30, 51, 52, 53,
369 : /* 50 */ 54, 55, 56, 57, 58, 59, 60, 76, 76, 78,
370 : /* 60 */ 47, 40, 41, 21, 16, 50, 3, 25, 87, 87,
371 : /* 70 */ 30, 25, 51, 52, 53, 54, 55, 56, 57, 58,
372 : /* 80 */ 59, 60, 19, 15, 17, 12, 13, 20, 40, 41,
373 : /* 90 */ 11, 23, 13, 30, 15, 28, 17, 18, 19, 51,
374 : /* 100 */ 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
375 : /* 110 */ 4, 21, 49, 24, 24, 3, 16, 73, 12, 13,
376 : /* 120 */ 47, 42, 43, 44, 45, 25, 95, 15, 49, 40,
377 : /* 130 */ 41, 31, 32, 33, 34, 35, 36, 37, 38, 78,
378 : /* 140 */ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
379 : /* 150 */ 3, 107, 11, 47, 13, 3, 15, 15, 17, 74,
380 : /* 160 */ 19, 61, 77, 1, 2, 3, 15, 5, 6, 7,
381 : /* 170 */ 95, 30, 10, 26, 23, 74, 74, 30, 77, 77,
382 : /* 180 */ 39, 96, 30, 42, 43, 44, 45, 85, 74, 75,
383 : /* 190 */ 49, 77, 90, 92, 80, 81, 82, 96, 96, 85,
384 : /* 200 */ 86, 11, 88, 13, 90, 15, 1, 17, 3, 19,
385 : /* 210 */ 96, 19, 1, 94, 3, 101, 97, 11, 99, 13,
386 : /* 220 */ 30, 15, 30, 17, 62, 19, 64, 65, 66, 1,
387 : /* 230 */ 19, 3, 42, 43, 44, 45, 30, 83, 11, 49,
388 : /* 240 */ 13, 49, 15, 78, 17, 1, 19, 3, 42, 43,
389 : /* 250 */ 44, 45, 98, 42, 11, 49, 13, 30, 15, 48,
390 : /* 260 */ 17, 1, 19, 3, 3, 4, 15, 102, 63, 42,
391 : /* 270 */ 43, 44, 45, 30, 23, 1, 49, 3, 74, 19,
392 : /* 280 */ 29, 77, 1, 9, 3, 42, 43, 44, 45, 85,
393 : /* 290 */ 86, 30, 49, 94, 90, 67, 97, 11, 99, 13,
394 : /* 300 */ 96, 15, 42, 17, 19, 19, 99, 15, 48, 3,
395 : /* 310 */ 95, 74, 75, 11, 77, 23, 30, 15, 26, 17,
396 : /* 320 */ 4, 19, 85, 86, 43, 88, 79, 90, 42, 43,
397 : /* 330 */ 44, 45, 30, 96, 49, 49, 30, 74, 28, 83,
398 : /* 340 */ 77, 104, 105, 27, 42, 43, 44, 45, 85, 3,
399 : /* 350 */ 95, 49, 74, 90, 98, 77, 50, 11, 15, 96,
400 : /* 360 */ 18, 74, 75, 21, 77, 19, 23, 80, 25, 76,
401 : /* 370 */ 27, 28, 85, 86, 96, 88, 30, 90, 74, 75,
402 : /* 380 */ 87, 77, 16, 96, 80, 27, 28, 48, 101, 85,
403 : /* 390 */ 86, 25, 88, 100, 90, 49, 74, 75, 74, 77,
404 : /* 400 */ 96, 77, 80, 74, 75, 101, 77, 85, 86, 80,
405 : /* 410 */ 88, 16, 90, 17, 85, 86, 20, 88, 96, 90,
406 : /* 420 */ 96, 74, 75, 101, 77, 96, 15, 80, 4, 18,
407 : /* 430 */ 101, 30, 85, 86, 23, 88, 76, 90, 78, 74,
408 : /* 440 */ 75, 4, 77, 96, 30, 80, 4, 87, 101, 25,
409 : /* 450 */ 85, 86, 76, 88, 78, 90, 74, 75, 4, 77,
410 : /* 460 */ 22, 96, 80, 87, 27, 27, 101, 85, 86, 27,
411 : /* 470 */ 88, 4, 90, 95, 74, 75, 98, 77, 96, 25,
412 : /* 480 */ 80, 74, 75, 101, 77, 85, 86, 80, 88, 30,
413 : /* 490 */ 90, 3, 85, 86, 27, 88, 96, 90, 4, 74,
414 : /* 500 */ 75, 101, 77, 96, 4, 80, 4, 4, 101, 91,
415 : /* 510 */ 85, 86, 11, 88, 74, 90, 15, 77, 30, 25,
416 : /* 520 */ 19, 96, 71, 72, 106, 85, 101, 27, 25, 27,
417 : /* 530 */ 90, 30, 83, 25, 30, 27, 96, 74, 75, 83,
418 : /* 540 */ 77, 30, 73, 42, 43, 44, 45, 98, 85, 86,
419 : /* 550 */ 49, 88, 94, 90, 98, 74, 75, 99, 77, 96,
420 : /* 560 */ 1, 30, 3, 83, 4, 83, 85, 86, 105, 88,
421 : /* 570 */ 73, 90, 74, 75, 93, 77, 107, 96, 98, 84,
422 : /* 580 */ 98, 76, 73, 85, 86, 94, 88, 16, 90, 103,
423 : /* 590 */ 99, 93, 87, 98, 96, 74, 75, 22, 77, 30,
424 : /* 600 */ 4, 15, 43, 16, 107, 8, 85, 86, 30, 88,
425 : /* 610 */ 30, 90, 74, 75, 93, 77, 107, 96, 46, 19,
426 : /* 620 */ 30, 4, 46, 85, 86, 48, 88, 26, 90, 11,
427 : /* 630 */ 26, 93, 20, 19, 96, 79, 97, 49, 19, 107,
428 : /* 640 */ 27, 74, 75, 92, 77, 87, 89, 98, 74, 75,
429 : /* 650 */ 106, 77, 85, 86, 22, 88, 19, 90, 95, 85,
430 : /* 660 */ 86, 100, 88, 96, 90, 81, 74, 75, 108, 77,
431 : /* 670 */ 96, 108, 108, 74, 75, 108, 77, 85, 86, 108,
432 : /* 680 */ 88, 108, 90, 108, 85, 86, 108, 88, 96, 90,
433 : /* 690 */ 74, 75, 108, 77, 108, 96, 108, 108, 108, 108,
434 : /* 700 */ 108, 85, 86, 108, 88, 108, 90, 108, 108, 108,
435 : /* 710 */ 108, 108, 96, 108, 108, 108, 74, 75, 108, 77,
436 : /* 720 */ 108, 108, 108, 74, 75, 108, 77, 85, 86, 108,
437 : /* 730 */ 88, 108, 90, 108, 85, 86, 108, 88, 96, 90,
438 : /* 740 */ 108, 74, 75, 108, 77, 96, 108, 108, 74, 75,
439 : /* 750 */ 108, 77, 85, 86, 108, 88, 108, 90, 108, 85,
440 : /* 760 */ 86, 108, 88, 96, 90, 74, 75, 108, 77, 108,
441 : /* 770 */ 96, 108, 108, 108, 108, 108, 85, 86, 108, 88,
442 : /* 780 */ 108, 90, 108, 108, 108, 108, 108, 96, 108, 108,
443 : /* 790 */ 108, 74, 75, 108, 77, 108, 108, 108, 74, 75,
444 : /* 800 */ 108, 77, 85, 86, 108, 88, 108, 90, 108, 85,
445 : /* 810 */ 86, 108, 88, 96, 90, 108, 74, 75, 108, 77,
446 : /* 820 */ 96, 108, 108, 74, 108, 108, 77, 85, 86, 108,
447 : /* 830 */ 88, 108, 90, 108, 85, 86, 108, 88, 96, 90,
448 : /* 840 */ 74, 108, 108, 77, 108, 96, 108, 108, 108, 108,
449 : /* 850 */ 108, 85, 86, 108, 88, 108, 90, 108, 108, 108,
450 : /* 860 */ 108, 108, 96, 108, 108, 108, 74, 108, 108, 77,
451 : /* 870 */ 108, 108, 108, 108, 108, 108, 108, 85, 86, 108,
452 : /* 880 */ 88, 108, 90, 108, 108, 108, 108, 108, 96,
453 : );
454 : const YY_SHIFT_USE_DFLT = -24;
455 : const YY_SHIFT_MAX = 169;
456 : static public $yy_shift_ofst = array(
457 : /* 0 */ 162, 141, -10, -10, -10, -10, -10, -10, -10, -10,
458 : /* 10 */ -10, -10, 286, 190, 286, 190, 190, 190, 190, 190,
459 : /* 20 */ 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
460 : /* 30 */ 206, 79, 243, 227, 302, 501, 501, 501, 63, 343,
461 : /* 40 */ 346, 67, 192, 67, 508, 438, 285, 508, 162, 100,
462 : /* 50 */ -21, 211, 16, 15, 306, 281, 488, 152, 488, 244,
463 : /* 60 */ 488, 152, 244, 488, 488, 358, 244, 613, 310, 310,
464 : /* 70 */ 89, 48, -4, 21, 21, 21, 21, 21, 21, 21,
465 : /* 80 */ 21, 260, 106, 13, 73, 73, 274, 205, 261, 228,
466 : /* 90 */ 40, 147, 559, 503, 396, 494, -23, 8, 42, 396,
467 : /* 100 */ 502, 366, 500, 467, 442, 316, 396, 396, 112, 424,
468 : /* 110 */ 454, 437, 46, 632, 310, 637, 46, 310, 310, 142,
469 : /* 120 */ 46, 46, 46, 46, 310, -24, -24, -24, -24, -24,
470 : /* 130 */ 292, 251, 411, 151, -22, 342, 68, 151, 90, 619,
471 : /* 140 */ 590, 617, 339, 600, 572, 597, 601, 576, 614, 588,
472 : /* 150 */ 612, 604, 577, 618, 580, 578, 511, 531, 504, 459,
473 : /* 160 */ 395, 401, 414, 560, 571, 586, 587, 596, 575, 569,
474 : );
475 : const YY_REDUCE_USE_DFLT = -49;
476 : const YY_REDUCE_MAX = 129;
477 : static public $yy_reduce_ofst = array(
478 : /* 0 */ -48, 114, 382, 407, 400, 347, 322, 425, 329, 304,
479 : /* 10 */ 287, 365, 237, 481, 463, 498, 521, 538, 616, 574,
480 : /* 20 */ 649, 599, 724, 592, 691, 567, 642, 742, 717, 667,
481 : /* 30 */ 674, 792, 749, 766, 204, 263, 102, 440, 101, 376,
482 : /* 40 */ 324, 199, 85, 119, -19, 293, 278, 360, 451, 165,
483 : /* 50 */ 165, 418, 495, 378, 378, 509, 449, 256, 480, 469,
484 : /* 60 */ 256, 482, 44, 154, 456, -18, 497, 505, 491, 458,
485 : /* 70 */ 486, 486, 486, 486, 486, 486, 486, 486, 486, 486,
486 : /* 80 */ 486, 544, 557, 557, 557, 557, 532, 532, 549, 532,
487 : /* 90 */ 549, 549, 532, 61, 539, 61, 61, 551, 61, 539,
488 : /* 100 */ 558, 61, 558, 558, 558, 558, 539, 539, 563, 61,
489 : /* 110 */ 61, 558, 61, 561, 207, 584, 61, 207, 207, 31,
490 : /* 120 */ 61, 61, 61, 61, 207, 75, 556, 255, 215, 247,
491 : );
492 : static public $yyExpectedTokens = array(
493 : /* 0 */ array(1, 2, 3, 5, 6, 7, 10, 62, 64, 65, 66, ),
494 : /* 1 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
495 : /* 2 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
496 : /* 3 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
497 : /* 4 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
498 : /* 5 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
499 : /* 6 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
500 : /* 7 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
501 : /* 8 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
502 : /* 9 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
503 : /* 10 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
504 : /* 11 */ array(11, 13, 15, 17, 19, 30, 39, 42, 43, 44, 45, 49, ),
505 : /* 12 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
506 : /* 13 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
507 : /* 14 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
508 : /* 15 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
509 : /* 16 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
510 : /* 17 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
511 : /* 18 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
512 : /* 19 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
513 : /* 20 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
514 : /* 21 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
515 : /* 22 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
516 : /* 23 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
517 : /* 24 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
518 : /* 25 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
519 : /* 26 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
520 : /* 27 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
521 : /* 28 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
522 : /* 29 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
523 : /* 30 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
524 : /* 31 */ array(11, 13, 15, 17, 18, 19, 30, 42, 43, 44, 45, 49, ),
525 : /* 32 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
526 : /* 33 */ array(11, 13, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
527 : /* 34 */ array(11, 15, 17, 19, 30, 42, 43, 44, 45, 49, ),
528 : /* 35 */ array(11, 15, 19, 30, 42, 43, 44, 45, 49, ),
529 : /* 36 */ array(11, 15, 19, 30, 42, 43, 44, 45, 49, ),
530 : /* 37 */ array(11, 15, 19, 30, 42, 43, 44, 45, 49, ),
531 : /* 38 */ array(3, 19, 30, 49, ),
532 : /* 39 */ array(15, 23, 25, 27, 28, ),
533 : /* 40 */ array(3, 11, 19, 30, 49, ),
534 : /* 41 */ array(17, 20, 28, ),
535 : /* 42 */ array(19, 30, 49, ),
536 : /* 43 */ array(17, 20, 28, ),
537 : /* 44 */ array(25, 27, ),
538 : /* 45 */ array(22, 27, ),
539 : /* 46 */ array(19, 49, ),
540 : /* 47 */ array(25, 27, ),
541 : /* 48 */ array(1, 2, 3, 5, 6, 7, 10, 62, 64, 65, 66, ),
542 : /* 49 */ array(16, 25, 31, 32, 33, 34, 35, 36, 37, 38, 61, ),
543 : /* 50 */ array(25, 31, 32, 33, 34, 35, 36, 37, 38, 61, ),
544 : /* 51 */ array(1, 3, 19, 42, 48, ),
545 : /* 52 */ array(3, 14, 26, 30, ),
546 : /* 53 */ array(3, 26, 30, 50, ),
547 : /* 54 */ array(3, 30, 50, ),
548 : /* 55 */ array(1, 3, 43, ),
549 : /* 56 */ array(3, 30, ),
550 : /* 57 */ array(3, 30, ),
551 : /* 58 */ array(3, 30, ),
552 : /* 59 */ array(1, 3, ),
553 : /* 60 */ array(3, 30, ),
554 : /* 61 */ array(3, 30, ),
555 : /* 62 */ array(1, 3, ),
556 : /* 63 */ array(3, 30, ),
557 : /* 64 */ array(3, 30, ),
558 : /* 65 */ array(27, 28, ),
559 : /* 66 */ array(1, 3, ),
560 : /* 67 */ array(27, ),
561 : /* 68 */ array(28, ),
562 : /* 69 */ array(28, ),
563 : /* 70 */ array(24, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
564 : /* 71 */ array(16, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
565 : /* 72 */ array(4, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
566 : /* 73 */ array(40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
567 : /* 74 */ array(40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
568 : /* 75 */ array(40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
569 : /* 76 */ array(40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
570 : /* 77 */ array(40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
571 : /* 78 */ array(40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
572 : /* 79 */ array(40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
573 : /* 80 */ array(40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
574 : /* 81 */ array(1, 3, 19, 42, 48, ),
575 : /* 82 */ array(4, 12, 13, 47, ),
576 : /* 83 */ array(12, 13, 18, 47, ),
577 : /* 84 */ array(12, 13, 47, ),
578 : /* 85 */ array(12, 13, 47, ),
579 : /* 86 */ array(1, 3, 9, ),
580 : /* 87 */ array(1, 3, 63, ),
581 : /* 88 */ array(3, 4, 30, ),
582 : /* 89 */ array(1, 3, 67, ),
583 : /* 90 */ array(3, 4, 30, ),
584 : /* 91 */ array(3, 26, 30, ),
585 : /* 92 */ array(1, 3, 43, ),
586 : /* 93 */ array(4, 25, ),
587 : /* 94 */ array(17, 20, ),
588 : /* 95 */ array(4, 25, ),
589 : /* 96 */ array(25, 29, ),
590 : /* 97 */ array(19, 30, ),
591 : /* 98 */ array(21, 25, ),
592 : /* 99 */ array(17, 20, ),
593 : /* 100 */ array(4, 27, ),
594 : /* 101 */ array(16, 25, ),
595 : /* 102 */ array(4, 27, ),
596 : /* 103 */ array(4, 27, ),
597 : /* 104 */ array(4, 27, ),
598 : /* 105 */ array(4, 27, ),
599 : /* 106 */ array(17, 20, ),
600 : /* 107 */ array(17, 20, ),
601 : /* 108 */ array(3, 15, ),
602 : /* 109 */ array(4, 25, ),
603 : /* 110 */ array(4, 25, ),
604 : /* 111 */ array(4, 27, ),
605 : /* 112 */ array(25, ),
606 : /* 113 */ array(22, ),
607 : /* 114 */ array(28, ),
608 : /* 115 */ array(19, ),
609 : /* 116 */ array(25, ),
610 : /* 117 */ array(28, ),
611 : /* 118 */ array(28, ),
612 : /* 119 */ array(15, ),
613 : /* 120 */ array(25, ),
614 : /* 121 */ array(25, ),
615 : /* 122 */ array(25, ),
616 : /* 123 */ array(25, ),
617 : /* 124 */ array(28, ),
618 : /* 125 */ array(),
619 : /* 126 */ array(),
620 : /* 127 */ array(),
621 : /* 128 */ array(),
622 : /* 129 */ array(),
623 : /* 130 */ array(15, 23, 26, ),
624 : /* 131 */ array(15, 23, 29, ),
625 : /* 132 */ array(15, 18, 23, ),
626 : /* 133 */ array(15, 23, ),
627 : /* 134 */ array(30, 50, ),
628 : /* 135 */ array(18, 21, ),
629 : /* 136 */ array(15, 23, ),
630 : /* 137 */ array(15, 23, ),
631 : /* 138 */ array(21, 24, ),
632 : /* 139 */ array(19, ),
633 : /* 140 */ array(30, ),
634 : /* 141 */ array(4, ),
635 : /* 142 */ array(48, ),
636 : /* 143 */ array(19, ),
637 : /* 144 */ array(46, ),
638 : /* 145 */ array(8, ),
639 : /* 146 */ array(26, ),
640 : /* 147 */ array(46, ),
641 : /* 148 */ array(19, ),
642 : /* 149 */ array(49, ),
643 : /* 150 */ array(20, ),
644 : /* 151 */ array(26, ),
645 : /* 152 */ array(48, ),
646 : /* 153 */ array(11, ),
647 : /* 154 */ array(30, ),
648 : /* 155 */ array(30, ),
649 : /* 156 */ array(30, ),
650 : /* 157 */ array(30, ),
651 : /* 158 */ array(30, ),
652 : /* 159 */ array(30, ),
653 : /* 160 */ array(16, ),
654 : /* 161 */ array(30, ),
655 : /* 162 */ array(30, ),
656 : /* 163 */ array(4, ),
657 : /* 164 */ array(16, ),
658 : /* 165 */ array(15, ),
659 : /* 166 */ array(16, ),
660 : /* 167 */ array(4, ),
661 : /* 168 */ array(22, ),
662 : /* 169 */ array(30, ),
663 : /* 170 */ array(),
664 : /* 171 */ array(),
665 : /* 172 */ array(),
666 : /* 173 */ array(),
667 : /* 174 */ array(),
668 : /* 175 */ array(),
669 : /* 176 */ array(),
670 : /* 177 */ array(),
671 : /* 178 */ array(),
672 : /* 179 */ array(),
673 : /* 180 */ array(),
674 : /* 181 */ array(),
675 : /* 182 */ array(),
676 : /* 183 */ array(),
677 : /* 184 */ array(),
678 : /* 185 */ array(),
679 : /* 186 */ array(),
680 : /* 187 */ array(),
681 : /* 188 */ array(),
682 : /* 189 */ array(),
683 : /* 190 */ array(),
684 : /* 191 */ array(),
685 : /* 192 */ array(),
686 : /* 193 */ array(),
687 : /* 194 */ array(),
688 : /* 195 */ array(),
689 : /* 196 */ array(),
690 : /* 197 */ array(),
691 : /* 198 */ array(),
692 : /* 199 */ array(),
693 : /* 200 */ array(),
694 : /* 201 */ array(),
695 : /* 202 */ array(),
696 : /* 203 */ array(),
697 : /* 204 */ array(),
698 : /* 205 */ array(),
699 : /* 206 */ array(),
700 : /* 207 */ array(),
701 : /* 208 */ array(),
702 : /* 209 */ array(),
703 : /* 210 */ array(),
704 : /* 211 */ array(),
705 : /* 212 */ array(),
706 : /* 213 */ array(),
707 : /* 214 */ array(),
708 : /* 215 */ array(),
709 : /* 216 */ array(),
710 : /* 217 */ array(),
711 : /* 218 */ array(),
712 : /* 219 */ array(),
713 : /* 220 */ array(),
714 : /* 221 */ array(),
715 : /* 222 */ array(),
716 : /* 223 */ array(),
717 : /* 224 */ array(),
718 : /* 225 */ array(),
719 : /* 226 */ array(),
720 : /* 227 */ array(),
721 : /* 228 */ array(),
722 : /* 229 */ array(),
723 : /* 230 */ array(),
724 : /* 231 */ array(),
725 : /* 232 */ array(),
726 : /* 233 */ array(),
727 : /* 234 */ array(),
728 : /* 235 */ array(),
729 : /* 236 */ array(),
730 : /* 237 */ array(),
731 : /* 238 */ array(),
732 : /* 239 */ array(),
733 : /* 240 */ array(),
734 : /* 241 */ array(),
735 : /* 242 */ array(),
736 : /* 243 */ array(),
737 : /* 244 */ array(),
738 : /* 245 */ array(),
739 : /* 246 */ array(),
740 : /* 247 */ array(),
741 : /* 248 */ array(),
742 : /* 249 */ array(),
743 : /* 250 */ array(),
744 : /* 251 */ array(),
745 : /* 252 */ array(),
746 : /* 253 */ array(),
747 : /* 254 */ array(),
748 : /* 255 */ array(),
749 : /* 256 */ array(),
750 : /* 257 */ array(),
751 : /* 258 */ array(),
752 : /* 259 */ array(),
753 : /* 260 */ array(),
754 : /* 261 */ array(),
755 : /* 262 */ array(),
756 : /* 263 */ array(),
757 : /* 264 */ array(),
758 : /* 265 */ array(),
759 : /* 266 */ array(),
760 : /* 267 */ array(),
761 : /* 268 */ array(),
762 : /* 269 */ array(),
763 : /* 270 */ array(),
764 : /* 271 */ array(),
765 : /* 272 */ array(),
766 : );
767 : static public $yy_default = array(
768 : /* 0 */ 419, 419, 419, 419, 419, 419, 419, 419, 419, 419,
769 : /* 10 */ 419, 419, 404, 366, 419, 366, 366, 366, 419, 419,
770 : /* 20 */ 419, 419, 419, 419, 419, 419, 419, 419, 419, 419,
771 : /* 30 */ 419, 419, 419, 419, 419, 419, 419, 419, 419, 302,
772 : /* 40 */ 419, 334, 419, 340, 302, 302, 419, 302, 273, 376,
773 : /* 50 */ 376, 419, 419, 342, 342, 419, 419, 419, 419, 419,
774 : /* 60 */ 419, 419, 419, 419, 419, 302, 419, 302, 330, 329,
775 : /* 70 */ 419, 419, 419, 385, 390, 386, 381, 380, 389, 382,
776 : /* 80 */ 374, 419, 419, 419, 308, 371, 419, 419, 419, 419,
777 : /* 90 */ 419, 419, 419, 419, 358, 419, 405, 419, 365, 359,
778 : /* 100 */ 419, 419, 419, 419, 419, 419, 360, 357, 342, 419,
779 : /* 110 */ 419, 419, 377, 310, 332, 419, 303, 335, 354, 342,
780 : /* 120 */ 296, 406, 306, 407, 331, 342, 370, 342, 342, 370,
781 : /* 130 */ 307, 307, 419, 372, 419, 419, 419, 307, 419, 419,
782 : /* 140 */ 419, 419, 419, 419, 311, 419, 419, 312, 419, 419,
783 : /* 150 */ 319, 336, 419, 419, 419, 419, 419, 419, 419, 419,
784 : /* 160 */ 419, 419, 419, 419, 419, 333, 419, 304, 352, 419,
785 : /* 170 */ 274, 292, 393, 379, 299, 391, 392, 291, 298, 297,
786 : /* 180 */ 378, 400, 375, 399, 388, 384, 387, 294, 373, 396,
787 : /* 190 */ 305, 395, 397, 383, 398, 295, 394, 363, 318, 320,
788 : /* 200 */ 321, 313, 312, 344, 345, 311, 322, 323, 327, 408,
789 : /* 210 */ 410, 326, 325, 356, 314, 343, 339, 418, 416, 278,
790 : /* 220 */ 417, 415, 275, 276, 277, 279, 280, 337, 341, 338,
791 : /* 230 */ 336, 283, 281, 282, 411, 412, 346, 351, 352, 324,
792 : /* 240 */ 355, 347, 349, 361, 284, 285, 288, 289, 290, 287,
793 : /* 250 */ 301, 286, 300, 348, 409, 317, 367, 368, 316, 369,
794 : /* 260 */ 315, 309, 350, 401, 403, 413, 414, 328, 362, 364,
795 : /* 270 */ 402, 353, 293,
796 : );
797 : /* The next thing included is series of defines which control
798 : ** various aspects of the generated parser.
799 : ** self::YYNOCODE is a number which corresponds
800 : ** to no legal terminal or nonterminal number. This
801 : ** number is used to fill in empty slots of the hash
802 : ** table.
803 : ** self::YYFALLBACK If defined, this indicates that one or more tokens
804 : ** have fall-back values which should be used if the
805 : ** original value of the token will not parse.
806 : ** self::YYSTACKDEPTH is the maximum depth of the parser's stack.
807 : ** self::YYNSTATE the combined number of states.
808 : ** self::YYNRULE the number of rules in the grammar
809 : ** self::YYERRORSYMBOL is the code number of the error symbol. If not
810 : ** defined, then do no error processing.
811 : */
812 : const YYNOCODE = 109;
813 : const YYSTACKDEPTH = 100;
814 : const YYNSTATE = 273;
815 : const YYNRULE = 146;
816 : const YYERRORSYMBOL = 68;
817 : const YYERRSYMDT = 'yy0';
818 : const YYFALLBACK = 1;
819 : /** The next table maps tokens into fallback tokens. If a construct
820 : * like the following:
821 : *
822 : * %fallback ID X Y Z.
823 : *
824 : * appears in the grammer, then ID becomes a fallback token for X, Y,
825 : * and Z. Whenever one of the tokens X, Y, or Z is input to the parser
826 : * but it does not parse, the type of the token is changed to ID and
827 : * the parse is retried before an error is thrown.
828 : */
829 : static public $yyFallback = array(
830 : 0, /* $ => nothing */
831 : 0, /* OTHER => nothing */
832 : 1, /* LDELSLASH => OTHER */
833 : 1, /* LDEL => OTHER */
834 : 1, /* RDEL => OTHER */
835 : 1, /* XML => OTHER */
836 : 1, /* PHP => OTHER */
837 : 1, /* SHORTTAGSTART => OTHER */
838 : 1, /* SHORTTAGEND => OTHER */
839 : 1, /* COMMENTEND => OTHER */
840 : 1, /* COMMENTSTART => OTHER */
841 : 1, /* INTEGER => OTHER */
842 : 1, /* MATH => OTHER */
843 : 1, /* UNIMATH => OTHER */
844 : 1, /* INCDEC => OTHER */
845 : 1, /* OPENP => OTHER */
846 : 1, /* CLOSEP => OTHER */
847 : 1, /* OPENB => OTHER */
848 : 1, /* CLOSEB => OTHER */
849 : 1, /* DOLLAR => OTHER */
850 : 1, /* DOT => OTHER */
851 : 1, /* COMMA => OTHER */
852 : 1, /* COLON => OTHER */
853 : 1, /* DOUBLECOLON => OTHER */
854 : 1, /* SEMICOLON => OTHER */
855 : 1, /* VERT => OTHER */
856 : 1, /* EQUAL => OTHER */
857 : 1, /* SPACE => OTHER */
858 : 1, /* PTR => OTHER */
859 : 1, /* APTR => OTHER */
860 : 1, /* ID => OTHER */
861 : 1, /* EQUALS => OTHER */
862 : 1, /* NOTEQUALS => OTHER */
863 : 1, /* GREATERTHAN => OTHER */
864 : 1, /* LESSTHAN => OTHER */
865 : 1, /* GREATEREQUAL => OTHER */
866 : 1, /* LESSEQUAL => OTHER */
867 : 1, /* IDENTITY => OTHER */
868 : 1, /* NONEIDENTITY => OTHER */
869 : 1, /* NOT => OTHER */
870 : 1, /* LAND => OTHER */
871 : 1, /* LOR => OTHER */
872 : 1, /* QUOTE => OTHER */
873 : 1, /* SINGLEQUOTE => OTHER */
874 : 1, /* BOOLEAN => OTHER */
875 : 1, /* NULL => OTHER */
876 : 1, /* AS => OTHER */
877 : 1, /* ANDSYM => OTHER */
878 : 1, /* BACKTICK => OTHER */
879 : 1, /* HATCH => OTHER */
880 : 1, /* AT => OTHER */
881 : 1, /* ISODD => OTHER */
882 : 1, /* ISNOTODD => OTHER */
883 : 1, /* ISEVEN => OTHER */
884 : 1, /* ISNOTEVEN => OTHER */
885 : 1, /* ISODDBY => OTHER */
886 : 1, /* ISNOTODDBY => OTHER */
887 : 1, /* ISEVENBY => OTHER */
888 : 1, /* ISNOTEVENBY => OTHER */
889 : 1, /* ISDIVBY => OTHER */
890 : 1, /* ISNOTDIVBY => OTHER */
891 : 1, /* ISIN => OTHER */
892 : 0, /* LITERALSTART => nothing */
893 : 0, /* LITERALEND => nothing */
894 : 0, /* LDELIMTAG => nothing */
895 : 0, /* RDELIMTAG => nothing */
896 : 0, /* PHPSTART => nothing */
897 : 0, /* PHPEND => nothing */
898 : );
899 : /**
900 : * Turn parser tracing on by giving a stream to which to write the trace
901 : * and a prompt to preface each trace message. Tracing is turned off
902 : * by making either argument NULL
903 : *
904 : * Inputs:
905 : *
906 : * - A stream resource to which trace output should be written.
907 : * If NULL, then tracing is turned off.
908 : * - A prefix string written at the beginning of every
909 : * line of trace output. If NULL, then tracing is
910 : * turned off.
911 : *
912 : * Outputs:
913 : *
914 : * - None.
915 : * @param resource
916 : * @param string
917 : */
918 : static function Trace($TraceFILE, $zTracePrompt)
919 : {
920 0 : if (!$TraceFILE) {
921 0 : $zTracePrompt = 0;
922 0 : } elseif (!$zTracePrompt) {
923 0 : $TraceFILE = 0;
924 0 : }
925 0 : self::$yyTraceFILE = $TraceFILE;
926 0 : self::$yyTracePrompt = $zTracePrompt;
927 0 : }
928 :
929 : /**
930 : * Output debug information to output (php://output stream)
931 : */
932 : static function PrintTrace()
933 : {
934 0 : self::$yyTraceFILE = fopen('php://output', 'w');
935 0 : self::$yyTracePrompt = '<br>';
936 0 : }
937 :
938 : /**
939 : * @var resource|0
940 : */
941 : static public $yyTraceFILE;
942 : /**
943 : * String to prepend to debug output
944 : * @var string|0
945 : */
946 : static public $yyTracePrompt;
947 : /**
948 : * @var int
949 : */
950 : public $yyidx; /* Index of top element in stack */
951 : /**
952 : * @var int
953 : */
954 : public $yyerrcnt; /* Shifts left before out of the error */
955 : /**
956 : * @var array
957 : */
958 : public $yystack = array(); /* The parser's stack */
959 :
960 : /**
961 : * For tracing shifts, the names of all terminals and nonterminals
962 : * are required. The following table supplies these names
963 : * @var array
964 : */
965 : public $yyTokenName = array(
966 : '$', 'OTHER', 'LDELSLASH', 'LDEL',
967 : 'RDEL', 'XML', 'PHP', 'SHORTTAGSTART',
968 : 'SHORTTAGEND', 'COMMENTEND', 'COMMENTSTART', 'INTEGER',
969 : 'MATH', 'UNIMATH', 'INCDEC', 'OPENP',
970 : 'CLOSEP', 'OPENB', 'CLOSEB', 'DOLLAR',
971 : 'DOT', 'COMMA', 'COLON', 'DOUBLECOLON',
972 : 'SEMICOLON', 'VERT', 'EQUAL', 'SPACE',
973 : 'PTR', 'APTR', 'ID', 'EQUALS',
974 : 'NOTEQUALS', 'GREATERTHAN', 'LESSTHAN', 'GREATEREQUAL',
975 : 'LESSEQUAL', 'IDENTITY', 'NONEIDENTITY', 'NOT',
976 : 'LAND', 'LOR', 'QUOTE', 'SINGLEQUOTE',
977 : 'BOOLEAN', 'NULL', 'AS', 'ANDSYM',
978 : 'BACKTICK', 'HATCH', 'AT', 'ISODD',
979 : 'ISNOTODD', 'ISEVEN', 'ISNOTEVEN', 'ISODDBY',
980 : 'ISNOTODDBY', 'ISEVENBY', 'ISNOTEVENBY', 'ISDIVBY',
981 : 'ISNOTDIVBY', 'ISIN', 'LITERALSTART', 'LITERALEND',
982 : 'LDELIMTAG', 'RDELIMTAG', 'PHPSTART', 'PHPEND',
983 : 'error', 'start', 'template', 'template_element',
984 : 'smartytag', 'text', 'variable', 'expr',
985 : 'attributes', 'varindexed', 'modifier', 'modparameters',
986 : 'ifexprs', 'statement', 'statements', 'varvar',
987 : 'foraction', 'value', 'array', 'attribute',
988 : 'exprs', 'math', 'function', 'doublequoted',
989 : 'method', 'params', 'objectchain', 'arrayindex',
990 : 'object', 'indexdef', 'varvarele', 'objectelement',
991 : 'modparameter', 'ifexpr', 'ifcond', 'lop',
992 : 'arrayelements', 'arrayelement', 'doublequotedcontent', 'textelement',
993 : );
994 :
995 : /**
996 : * For tracing reduce actions, the names of all rules are required.
997 : * @var array
998 : */
999 : static public $yyRuleName = array(
1000 : /* 0 */ "start ::= template",
1001 : /* 1 */ "template ::= template_element",
1002 : /* 2 */ "template ::= template template_element",
1003 : /* 3 */ "template_element ::= smartytag",
1004 : /* 4 */ "template_element ::= COMMENTSTART text COMMENTEND",
1005 : /* 5 */ "template_element ::= LITERALSTART text LITERALEND",
1006 : /* 6 */ "template_element ::= LDELIMTAG",
1007 : /* 7 */ "template_element ::= RDELIMTAG",
1008 : /* 8 */ "template_element ::= PHP",
1009 : /* 9 */ "template_element ::= PHPSTART text PHPEND",
1010 : /* 10 */ "template_element ::= SHORTTAGSTART variable SHORTTAGEND",
1011 : /* 11 */ "template_element ::= XML",
1012 : /* 12 */ "template_element ::= OTHER",
1013 : /* 13 */ "smartytag ::= LDEL expr attributes RDEL",
1014 : /* 14 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
1015 : /* 15 */ "smartytag ::= LDEL ID attributes RDEL",
1016 : /* 16 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
1017 : /* 17 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL",
1018 : /* 18 */ "smartytag ::= LDELSLASH ID attributes RDEL",
1019 : /* 19 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
1020 : /* 20 */ "smartytag ::= LDEL ID SPACE ifexprs RDEL",
1021 : /* 21 */ "smartytag ::= LDEL ID SPACE statement RDEL",
1022 : /* 22 */ "smartytag ::= LDEL ID SPACE statements SEMICOLON ifexprs SEMICOLON DOLLAR varvar foraction RDEL",
1023 : /* 23 */ "foraction ::= EQUAL expr",
1024 : /* 24 */ "foraction ::= INCDEC",
1025 : /* 25 */ "smartytag ::= LDEL ID SPACE value AS DOLLAR varvar RDEL",
1026 : /* 26 */ "smartytag ::= LDEL ID SPACE array AS DOLLAR varvar RDEL",
1027 : /* 27 */ "attributes ::= attributes attribute",
1028 : /* 28 */ "attributes ::= attribute",
1029 : /* 29 */ "attributes ::=",
1030 : /* 30 */ "attribute ::= SPACE ID EQUAL expr",
1031 : /* 31 */ "statements ::= statement",
1032 : /* 32 */ "statements ::= statements COMMA statement",
1033 : /* 33 */ "statement ::= DOLLAR varvar EQUAL expr",
1034 : /* 34 */ "expr ::= ID",
1035 : /* 35 */ "expr ::= exprs",
1036 : /* 36 */ "expr ::= DOLLAR ID COLON ID",
1037 : /* 37 */ "expr ::= expr modifier modparameters",
1038 : /* 38 */ "exprs ::= array",
1039 : /* 39 */ "exprs ::= value",
1040 : /* 40 */ "exprs ::= UNIMATH value",
1041 : /* 41 */ "exprs ::= exprs math value",
1042 : /* 42 */ "exprs ::= exprs ANDSYM value",
1043 : /* 43 */ "math ::= UNIMATH",
1044 : /* 44 */ "math ::= MATH",
1045 : /* 45 */ "value ::= variable",
1046 : /* 46 */ "value ::= INTEGER",
1047 : /* 47 */ "value ::= INTEGER DOT INTEGER",
1048 : /* 48 */ "value ::= BOOLEAN",
1049 : /* 49 */ "value ::= NULL",
1050 : /* 50 */ "value ::= function",
1051 : /* 51 */ "value ::= OPENP expr CLOSEP",
1052 : /* 52 */ "value ::= SINGLEQUOTE text SINGLEQUOTE",
1053 : /* 53 */ "value ::= SINGLEQUOTE SINGLEQUOTE",
1054 : /* 54 */ "value ::= QUOTE doublequoted QUOTE",
1055 : /* 55 */ "value ::= QUOTE QUOTE",
1056 : /* 56 */ "value ::= ID DOUBLECOLON method",
1057 : /* 57 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP",
1058 : /* 58 */ "value ::= ID DOUBLECOLON method objectchain",
1059 : /* 59 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain",
1060 : /* 60 */ "value ::= ID DOUBLECOLON ID",
1061 : /* 61 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex",
1062 : /* 62 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain",
1063 : /* 63 */ "variable ::= varindexed",
1064 : /* 64 */ "variable ::= DOLLAR varvar AT ID",
1065 : /* 65 */ "variable ::= object",
1066 : /* 66 */ "variable ::= HATCH ID HATCH",
1067 : /* 67 */ "varindexed ::= DOLLAR varvar arrayindex",
1068 : /* 68 */ "arrayindex ::= arrayindex indexdef",
1069 : /* 69 */ "arrayindex ::=",
1070 : /* 70 */ "indexdef ::= DOT ID",
1071 : /* 71 */ "indexdef ::= DOT INTEGER",
1072 : /* 72 */ "indexdef ::= DOT variable",
1073 : /* 73 */ "indexdef ::= DOT LDEL exprs RDEL",
1074 : /* 74 */ "indexdef ::= OPENB ID CLOSEB",
1075 : /* 75 */ "indexdef ::= OPENB exprs CLOSEB",
1076 : /* 76 */ "indexdef ::= OPENB CLOSEB",
1077 : /* 77 */ "varvar ::= varvarele",
1078 : /* 78 */ "varvar ::= varvar varvarele",
1079 : /* 79 */ "varvarele ::= ID",
1080 : /* 80 */ "varvarele ::= LDEL expr RDEL",
1081 : /* 81 */ "object ::= DOLLAR varvar arrayindex objectchain",
1082 : /* 82 */ "objectchain ::= objectelement",
1083 : /* 83 */ "objectchain ::= objectchain objectelement",
1084 : /* 84 */ "objectelement ::= PTR ID arrayindex",
1085 : /* 85 */ "objectelement ::= PTR variable arrayindex",
1086 : /* 86 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
1087 : /* 87 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
1088 : /* 88 */ "objectelement ::= PTR method",
1089 : /* 89 */ "function ::= ID OPENP params CLOSEP",
1090 : /* 90 */ "method ::= ID OPENP params CLOSEP",
1091 : /* 91 */ "params ::= expr COMMA params",
1092 : /* 92 */ "params ::= expr",
1093 : /* 93 */ "params ::=",
1094 : /* 94 */ "modifier ::= VERT AT ID",
1095 : /* 95 */ "modifier ::= VERT ID",
1096 : /* 96 */ "modparameters ::= modparameters modparameter",
1097 : /* 97 */ "modparameters ::=",
1098 : /* 98 */ "modparameter ::= COLON exprs",
1099 : /* 99 */ "modparameter ::= COLON ID",
1100 : /* 100 */ "ifexprs ::= ifexpr",
1101 : /* 101 */ "ifexprs ::= NOT ifexprs",
1102 : /* 102 */ "ifexprs ::= OPENP ifexprs CLOSEP",
1103 : /* 103 */ "ifexpr ::= expr",
1104 : /* 104 */ "ifexpr ::= expr ifcond expr",
1105 : /* 105 */ "ifexpr ::= expr ISIN array",
1106 : /* 106 */ "ifexpr ::= expr ISIN value",
1107 : /* 107 */ "ifexpr ::= ifexprs lop ifexprs",
1108 : /* 108 */ "ifexpr ::= ifexprs ISDIVBY ifexprs",
1109 : /* 109 */ "ifexpr ::= ifexprs ISNOTDIVBY ifexprs",
1110 : /* 110 */ "ifexpr ::= ifexprs ISEVEN",
1111 : /* 111 */ "ifexpr ::= ifexprs ISNOTEVEN",
1112 : /* 112 */ "ifexpr ::= ifexprs ISEVENBY ifexprs",
1113 : /* 113 */ "ifexpr ::= ifexprs ISNOTEVENBY ifexprs",
1114 : /* 114 */ "ifexpr ::= ifexprs ISODD",
1115 : /* 115 */ "ifexpr ::= ifexprs ISNOTODD",
1116 : /* 116 */ "ifexpr ::= ifexprs ISODDBY ifexprs",
1117 : /* 117 */ "ifexpr ::= ifexprs ISNOTODDBY ifexprs",
1118 : /* 118 */ "ifcond ::= EQUALS",
1119 : /* 119 */ "ifcond ::= NOTEQUALS",
1120 : /* 120 */ "ifcond ::= GREATERTHAN",
1121 : /* 121 */ "ifcond ::= LESSTHAN",
1122 : /* 122 */ "ifcond ::= GREATEREQUAL",
1123 : /* 123 */ "ifcond ::= LESSEQUAL",
1124 : /* 124 */ "ifcond ::= IDENTITY",
1125 : /* 125 */ "ifcond ::= NONEIDENTITY",
1126 : /* 126 */ "lop ::= LAND",
1127 : /* 127 */ "lop ::= LOR",
1128 : /* 128 */ "array ::= OPENB arrayelements CLOSEB",
1129 : /* 129 */ "arrayelements ::= arrayelement",
1130 : /* 130 */ "arrayelements ::= arrayelements COMMA arrayelement",
1131 : /* 131 */ "arrayelements ::=",
1132 : /* 132 */ "arrayelement ::= expr",
1133 : /* 133 */ "arrayelement ::= expr APTR expr",
1134 : /* 134 */ "arrayelement ::= ID APTR expr",
1135 : /* 135 */ "doublequoted ::= doublequoted doublequotedcontent",
1136 : /* 136 */ "doublequoted ::= doublequotedcontent",
1137 : /* 137 */ "doublequotedcontent ::= BACKTICK ID BACKTICK",
1138 : /* 138 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
1139 : /* 139 */ "doublequotedcontent ::= DOLLAR ID",
1140 : /* 140 */ "doublequotedcontent ::= LDEL expr RDEL",
1141 : /* 141 */ "doublequotedcontent ::= OTHER",
1142 : /* 142 */ "text ::= text textelement",
1143 : /* 143 */ "text ::= textelement",
1144 : /* 144 */ "textelement ::= OTHER",
1145 : /* 145 */ "textelement ::= LDEL",
1146 : );
1147 :
1148 : /**
1149 : * This function returns the symbolic name associated with a token
1150 : * value.
1151 : * @param int
1152 : * @return string
1153 : */
1154 : function tokenName($tokenType)
1155 : {
1156 0 : if ($tokenType === 0) {
1157 0 : return 'End of Input';
1158 : }
1159 0 : if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1160 0 : return $this->yyTokenName[$tokenType];
1161 : } else {
1162 0 : return "Unknown";
1163 : }
1164 : }
1165 :
1166 : /**
1167 : * The following function deletes the value associated with a
1168 : * symbol. The symbol can be either a terminal or nonterminal.
1169 : * @param int the symbol code
1170 : * @param mixed the symbol's value
1171 : */
1172 : static function yy_destructor($yymajor, $yypminor)
1173 : {
1174 : switch ($yymajor) {
1175 : /* Here is inserted the actions which take place when a
1176 : ** terminal or non-terminal is destroyed. This can happen
1177 : ** when the symbol is popped from the stack during a
1178 : ** reduce or during error processing or when a parser is
1179 : ** being destroyed before it is finished parsing.
1180 : **
1181 : ** Note: during a reduce, the only symbols destroyed are those
1182 : ** which appear on the RHS of the rule, but which are not used
1183 : ** inside the C code.
1184 : */
1185 309 : default: break; /* If no destructor action specified: do nothing */
1186 309 : }
1187 309 : }
1188 :
1189 : /**
1190 : * Pop the parser's stack once.
1191 : *
1192 : * If there is a destructor routine associated with the token which
1193 : * is popped from the stack, then call it.
1194 : *
1195 : * Return the major token number for the symbol popped.
1196 : * @param TP_yyParser
1197 : * @return int
1198 : */
1199 : function yy_pop_parser_stack()
1200 : {
1201 309 : if (!count($this->yystack)) {
1202 0 : return;
1203 : }
1204 309 : $yytos = array_pop($this->yystack);
1205 309 : if (self::$yyTraceFILE && $this->yyidx >= 0) {
1206 0 : fwrite(self::$yyTraceFILE,
1207 0 : self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
1208 0 : "\n");
1209 0 : }
1210 309 : $yymajor = $yytos->major;
1211 309 : self::yy_destructor($yymajor, $yytos->minor);
1212 309 : $this->yyidx--;
1213 309 : return $yymajor;
1214 : }
1215 :
1216 : /**
1217 : * Deallocate and destroy a parser. Destructors are all called for
1218 : * all stack elements before shutting the parser down.
1219 : */
1220 : function __destruct()
1221 : {
1222 309 : while ($this->yyidx >= 0) {
1223 2 : $this->yy_pop_parser_stack();
1224 2 : }
1225 309 : if (is_resource(self::$yyTraceFILE)) {
1226 0 : fclose(self::$yyTraceFILE);
1227 0 : }
1228 309 : }
1229 :
1230 : /**
1231 : * Based on the current state and parser stack, get a list of all
1232 : * possible lookahead tokens
1233 : * @param int
1234 : * @return array
1235 : */
1236 : function yy_get_expected_tokens($token)
1237 : {
1238 1 : $state = $this->yystack[$this->yyidx]->stateno;
1239 1 : $expected = self::$yyExpectedTokens[$state];
1240 1 : if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1241 0 : return $expected;
1242 : }
1243 1 : $stack = $this->yystack;
1244 1 : $yyidx = $this->yyidx;
1245 : do {
1246 1 : $yyact = $this->yy_find_shift_action($token);
1247 1 : if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1248 : // reduce action
1249 0 : $done = 0;
1250 : do {
1251 0 : if ($done++ == 100) {
1252 0 : $this->yyidx = $yyidx;
1253 0 : $this->yystack = $stack;
1254 : // too much recursion prevents proper detection
1255 : // so give up
1256 0 : return array_unique($expected);
1257 : }
1258 0 : $yyruleno = $yyact - self::YYNSTATE;
1259 0 : $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1260 0 : $nextstate = $this->yy_find_reduce_action(
1261 0 : $this->yystack[$this->yyidx]->stateno,
1262 0 : self::$yyRuleInfo[$yyruleno]['lhs']);
1263 0 : if (isset(self::$yyExpectedTokens[$nextstate])) {
1264 0 : $expected += self::$yyExpectedTokens[$nextstate];
1265 0 : if (in_array($token,
1266 0 : self::$yyExpectedTokens[$nextstate], true)) {
1267 0 : $this->yyidx = $yyidx;
1268 0 : $this->yystack = $stack;
1269 0 : return array_unique($expected);
1270 : }
1271 0 : }
1272 0 : if ($nextstate < self::YYNSTATE) {
1273 : // we need to shift a non-terminal
1274 0 : $this->yyidx++;
1275 0 : $x = new TP_yyStackEntry;
1276 0 : $x->stateno = $nextstate;
1277 0 : $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1278 0 : $this->yystack[$this->yyidx] = $x;
1279 0 : continue 2;
1280 0 : } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1281 0 : $this->yyidx = $yyidx;
1282 0 : $this->yystack = $stack;
1283 : // the last token was just ignored, we can't accept
1284 : // by ignoring input, this is in essence ignoring a
1285 : // syntax error!
1286 0 : return array_unique($expected);
1287 0 : } elseif ($nextstate === self::YY_NO_ACTION) {
1288 0 : $this->yyidx = $yyidx;
1289 0 : $this->yystack = $stack;
1290 : // input accepted, but not shifted (I guess)
1291 0 : return $expected;
1292 : } else {
1293 0 : $yyact = $nextstate;
1294 : }
1295 0 : } while (true);
1296 0 : }
1297 1 : break;
1298 0 : } while (true);
1299 1 : return array_unique($expected);
1300 : }
1301 :
1302 : /**
1303 : * Based on the parser state and current parser stack, determine whether
1304 : * the lookahead token is possible.
1305 : *
1306 : * The parser will convert the token value to an error token if not. This
1307 : * catches some unusual edge cases where the parser would fail.
1308 : * @param int
1309 : * @return bool
1310 : */
1311 : function yy_is_expected_token($token)
1312 : {
1313 321 : if ($token === 0) {
1314 315 : return true; // 0 is not part of this
1315 : }
1316 321 : $state = $this->yystack[$this->yyidx]->stateno;
1317 321 : if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1318 306 : return true;
1319 : }
1320 316 : $stack = $this->yystack;
1321 316 : $yyidx = $this->yyidx;
1322 : do {
1323 316 : $yyact = $this->yy_find_shift_action($token);
1324 316 : if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1325 : // reduce action
1326 315 : $done = 0;
1327 : do {
1328 315 : if ($done++ == 100) {
1329 0 : $this->yyidx = $yyidx;
1330 0 : $this->yystack = $stack;
1331 : // too much recursion prevents proper detection
1332 : // so give up
1333 0 : return true;
1334 : }
1335 315 : $yyruleno = $yyact - self::YYNSTATE;
1336 315 : $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1337 315 : $nextstate = $this->yy_find_reduce_action(
1338 315 : $this->yystack[$this->yyidx]->stateno,
1339 315 : self::$yyRuleInfo[$yyruleno]['lhs']);
1340 315 : if (isset(self::$yyExpectedTokens[$nextstate]) &&
1341 315 : in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
1342 300 : $this->yyidx = $yyidx;
1343 300 : $this->yystack = $stack;
1344 300 : return true;
1345 : }
1346 307 : if ($nextstate < self::YYNSTATE) {
1347 : // we need to shift a non-terminal
1348 307 : $this->yyidx++;
1349 307 : $x = new TP_yyStackEntry;
1350 307 : $x->stateno = $nextstate;
1351 307 : $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1352 307 : $this->yystack[$this->yyidx] = $x;
1353 307 : continue 2;
1354 0 : } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1355 0 : $this->yyidx = $yyidx;
1356 0 : $this->yystack = $stack;
1357 0 : if (!$token) {
1358 : // end of input: this is valid
1359 0 : return true;
1360 : }
1361 : // the last token was just ignored, we can't accept
1362 : // by ignoring input, this is in essence ignoring a
1363 : // syntax error!
1364 0 : return false;
1365 0 : } elseif ($nextstate === self::YY_NO_ACTION) {
1366 0 : $this->yyidx = $yyidx;
1367 0 : $this->yystack = $stack;
1368 : // input accepted, but not shifted (I guess)
1369 0 : return true;
1370 : } else {
1371 0 : $yyact = $nextstate;
1372 : }
1373 0 : } while (true);
1374 0 : }
1375 240 : break;
1376 0 : } while (true);
1377 240 : $this->yyidx = $yyidx;
1378 240 : $this->yystack = $stack;
1379 240 : return true;
1380 : }
1381 :
1382 : /**
1383 : * Find the appropriate action for a parser given the terminal
1384 : * look-ahead token iLookAhead.
1385 : *
1386 : * If the look-ahead token is YYNOCODE, then check to see if the action is
1387 : * independent of the look-ahead. If it is, return the action, otherwise
1388 : * return YY_NO_ACTION.
1389 : * @param int The look-ahead token
1390 : */
1391 : function yy_find_shift_action($iLookAhead)
1392 : {
1393 321 : $stateno = $this->yystack[$this->yyidx]->stateno;
1394 :
1395 : /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
1396 321 : if (!isset(self::$yy_shift_ofst[$stateno])) {
1397 : // no shift actions
1398 320 : return self::$yy_default[$stateno];
1399 : }
1400 321 : $i = self::$yy_shift_ofst[$stateno];
1401 321 : if ($i === self::YY_SHIFT_USE_DFLT) {
1402 16 : return self::$yy_default[$stateno];
1403 : }
1404 321 : if ($iLookAhead == self::YYNOCODE) {
1405 0 : return self::YY_NO_ACTION;
1406 : }
1407 321 : $i += $iLookAhead;
1408 321 : if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1409 321 : self::$yy_lookahead[$i] != $iLookAhead) {
1410 321 : if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
1411 321 : && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
1412 316 : if (self::$yyTraceFILE) {
1413 0 : fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
1414 0 : $this->yyTokenName[$iLookAhead] . " => " .
1415 0 : $this->yyTokenName[$iFallback] . "\n");
1416 0 : }
1417 316 : return $this->yy_find_shift_action($iFallback);
1418 : }
1419 321 : return self::$yy_default[$stateno];
1420 : } else {
1421 321 : return self::$yy_action[$i];
1422 : }
1423 : }
1424 :
1425 : /**
1426 : * Find the appropriate action for a parser given the non-terminal
1427 : * look-ahead token $iLookAhead.
1428 : *
1429 : * If the look-ahead token is self::YYNOCODE, then check to see if the action is
1430 : * independent of the look-ahead. If it is, return the action, otherwise
1431 : * return self::YY_NO_ACTION.
1432 : * @param int Current state number
1433 : * @param int The look-ahead token
1434 : */
1435 : function yy_find_reduce_action($stateno, $iLookAhead)
1436 : {
1437 : /* $stateno = $this->yystack[$this->yyidx]->stateno; */
1438 :
1439 320 : if (!isset(self::$yy_reduce_ofst[$stateno])) {
1440 0 : return self::$yy_default[$stateno];
1441 : }
1442 320 : $i = self::$yy_reduce_ofst[$stateno];
1443 320 : if ($i == self::YY_REDUCE_USE_DFLT) {
1444 0 : return self::$yy_default[$stateno];
1445 : }
1446 320 : if ($iLookAhead == self::YYNOCODE) {
1447 0 : return self::YY_NO_ACTION;
1448 : }
1449 320 : $i += $iLookAhead;
1450 320 : if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1451 320 : self::$yy_lookahead[$i] != $iLookAhead) {
1452 0 : return self::$yy_default[$stateno];
1453 : } else {
1454 320 : return self::$yy_action[$i];
1455 : }
1456 : }
1457 :
1458 : /**
1459 : * Perform a shift action.
1460 : * @param int The new state to shift in
1461 : * @param int The major token to shift in
1462 : * @param mixed the minor token to shift in
1463 : */
1464 : function yy_shift($yyNewState, $yyMajor, $yypMinor)
1465 : {
1466 321 : $this->yyidx++;
1467 321 : if ($this->yyidx >= self::YYSTACKDEPTH) {
1468 0 : $this->yyidx--;
1469 0 : if (self::$yyTraceFILE) {
1470 0 : fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
1471 0 : }
1472 0 : while ($this->yyidx >= 0) {
1473 0 : $this->yy_pop_parser_stack();
1474 0 : }
1475 : /* Here code is inserted which will execute if the parser
1476 : ** stack ever overflows */
1477 0 : return;
1478 : }
1479 321 : $yytos = new TP_yyStackEntry;
1480 321 : $yytos->stateno = $yyNewState;
1481 321 : $yytos->major = $yyMajor;
1482 321 : $yytos->minor = $yypMinor;
1483 321 : array_push($this->yystack, $yytos);
1484 321 : if (self::$yyTraceFILE && $this->yyidx > 0) {
1485 0 : fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
1486 0 : $yyNewState);
1487 0 : fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
1488 0 : for($i = 1; $i <= $this->yyidx; $i++) {
1489 0 : fprintf(self::$yyTraceFILE, " %s",
1490 0 : $this->yyTokenName[$this->yystack[$i]->major]);
1491 0 : }
1492 0 : fwrite(self::$yyTraceFILE,"\n");
1493 0 : }
1494 321 : }
1495 :
1496 : /**
1497 : * The following table contains information about every rule that
1498 : * is used during the reduce.
1499 : *
1500 : * <pre>
1501 : * array(
1502 : * array(
1503 : * int $lhs; Symbol on the left-hand side of the rule
1504 : * int $nrhs; Number of right-hand side symbols in the rule
1505 : * ),...
1506 : * );
1507 : * </pre>
1508 : */
1509 : static public $yyRuleInfo = array(
1510 : array( 'lhs' => 69, 'rhs' => 1 ),
1511 : array( 'lhs' => 70, 'rhs' => 1 ),
1512 : array( 'lhs' => 70, 'rhs' => 2 ),
1513 : array( 'lhs' => 71, 'rhs' => 1 ),
1514 : array( 'lhs' => 71, 'rhs' => 3 ),
1515 : array( 'lhs' => 71, 'rhs' => 3 ),
1516 : array( 'lhs' => 71, 'rhs' => 1 ),
1517 : array( 'lhs' => 71, 'rhs' => 1 ),
1518 : array( 'lhs' => 71, 'rhs' => 1 ),
1519 : array( 'lhs' => 71, 'rhs' => 3 ),
1520 : array( 'lhs' => 71, 'rhs' => 3 ),
1521 : array( 'lhs' => 71, 'rhs' => 1 ),
1522 : array( 'lhs' => 71, 'rhs' => 1 ),
1523 : array( 'lhs' => 72, 'rhs' => 4 ),
1524 : array( 'lhs' => 72, 'rhs' => 6 ),
1525 : array( 'lhs' => 72, 'rhs' => 4 ),
1526 : array( 'lhs' => 72, 'rhs' => 6 ),
1527 : array( 'lhs' => 72, 'rhs' => 6 ),
1528 : array( 'lhs' => 72, 'rhs' => 4 ),
1529 : array( 'lhs' => 72, 'rhs' => 5 ),
1530 : array( 'lhs' => 72, 'rhs' => 5 ),
1531 : array( 'lhs' => 72, 'rhs' => 5 ),
1532 : array( 'lhs' => 72, 'rhs' => 11 ),
1533 : array( 'lhs' => 84, 'rhs' => 2 ),
1534 : array( 'lhs' => 84, 'rhs' => 1 ),
1535 : array( 'lhs' => 72, 'rhs' => 8 ),
1536 : array( 'lhs' => 72, 'rhs' => 8 ),
1537 : array( 'lhs' => 76, 'rhs' => 2 ),
1538 : array( 'lhs' => 76, 'rhs' => 1 ),
1539 : array( 'lhs' => 76, 'rhs' => 0 ),
1540 : array( 'lhs' => 87, 'rhs' => 4 ),
1541 : array( 'lhs' => 82, 'rhs' => 1 ),
1542 : array( 'lhs' => 82, 'rhs' => 3 ),
1543 : array( 'lhs' => 81, 'rhs' => 4 ),
1544 : array( 'lhs' => 75, 'rhs' => 1 ),
1545 : array( 'lhs' => 75, 'rhs' => 1 ),
1546 : array( 'lhs' => 75, 'rhs' => 4 ),
1547 : array( 'lhs' => 75, 'rhs' => 3 ),
1548 : array( 'lhs' => 88, 'rhs' => 1 ),
1549 : array( 'lhs' => 88, 'rhs' => 1 ),
1550 : array( 'lhs' => 88, 'rhs' => 2 ),
1551 : array( 'lhs' => 88, 'rhs' => 3 ),
1552 : array( 'lhs' => 88, 'rhs' => 3 ),
1553 : array( 'lhs' => 89, 'rhs' => 1 ),
1554 : array( 'lhs' => 89, 'rhs' => 1 ),
1555 : array( 'lhs' => 85, 'rhs' => 1 ),
1556 : array( 'lhs' => 85, 'rhs' => 1 ),
1557 : array( 'lhs' => 85, 'rhs' => 3 ),
1558 : array( 'lhs' => 85, 'rhs' => 1 ),
1559 : array( 'lhs' => 85, 'rhs' => 1 ),
1560 : array( 'lhs' => 85, 'rhs' => 1 ),
1561 : array( 'lhs' => 85, 'rhs' => 3 ),
1562 : array( 'lhs' => 85, 'rhs' => 3 ),
1563 : array( 'lhs' => 85, 'rhs' => 2 ),
1564 : array( 'lhs' => 85, 'rhs' => 3 ),
1565 : array( 'lhs' => 85, 'rhs' => 2 ),
1566 : array( 'lhs' => 85, 'rhs' => 3 ),
1567 : array( 'lhs' => 85, 'rhs' => 7 ),
1568 : array( 'lhs' => 85, 'rhs' => 4 ),
1569 : array( 'lhs' => 85, 'rhs' => 8 ),
1570 : array( 'lhs' => 85, 'rhs' => 3 ),
1571 : array( 'lhs' => 85, 'rhs' => 5 ),
1572 : array( 'lhs' => 85, 'rhs' => 6 ),
1573 : array( 'lhs' => 74, 'rhs' => 1 ),
1574 : array( 'lhs' => 74, 'rhs' => 4 ),
1575 : array( 'lhs' => 74, 'rhs' => 1 ),
1576 : array( 'lhs' => 74, 'rhs' => 3 ),
1577 : array( 'lhs' => 77, 'rhs' => 3 ),
1578 : array( 'lhs' => 95, 'rhs' => 2 ),
1579 : array( 'lhs' => 95, 'rhs' => 0 ),
1580 : array( 'lhs' => 97, 'rhs' => 2 ),
1581 : array( 'lhs' => 97, 'rhs' => 2 ),
1582 : array( 'lhs' => 97, 'rhs' => 2 ),
1583 : array( 'lhs' => 97, 'rhs' => 4 ),
1584 : array( 'lhs' => 97, 'rhs' => 3 ),
1585 : array( 'lhs' => 97, 'rhs' => 3 ),
1586 : array( 'lhs' => 97, 'rhs' => 2 ),
1587 : array( 'lhs' => 83, 'rhs' => 1 ),
1588 : array( 'lhs' => 83, 'rhs' => 2 ),
1589 : array( 'lhs' => 98, 'rhs' => 1 ),
1590 : array( 'lhs' => 98, 'rhs' => 3 ),
1591 : array( 'lhs' => 96, 'rhs' => 4 ),
1592 : array( 'lhs' => 94, 'rhs' => 1 ),
1593 : array( 'lhs' => 94, 'rhs' => 2 ),
1594 : array( 'lhs' => 99, 'rhs' => 3 ),
1595 : array( 'lhs' => 99, 'rhs' => 3 ),
1596 : array( 'lhs' => 99, 'rhs' => 5 ),
1597 : array( 'lhs' => 99, 'rhs' => 6 ),
1598 : array( 'lhs' => 99, 'rhs' => 2 ),
1599 : array( 'lhs' => 90, 'rhs' => 4 ),
1600 : array( 'lhs' => 92, 'rhs' => 4 ),
1601 : array( 'lhs' => 93, 'rhs' => 3 ),
1602 : array( 'lhs' => 93, 'rhs' => 1 ),
1603 : array( 'lhs' => 93, 'rhs' => 0 ),
1604 : array( 'lhs' => 78, 'rhs' => 3 ),
1605 : array( 'lhs' => 78, 'rhs' => 2 ),
1606 : array( 'lhs' => 79, 'rhs' => 2 ),
1607 : array( 'lhs' => 79, 'rhs' => 0 ),
1608 : array( 'lhs' => 100, 'rhs' => 2 ),
1609 : array( 'lhs' => 100, 'rhs' => 2 ),
1610 : array( 'lhs' => 80, 'rhs' => 1 ),
1611 : array( 'lhs' => 80, 'rhs' => 2 ),
1612 : array( 'lhs' => 80, 'rhs' => 3 ),
1613 : array( 'lhs' => 101, 'rhs' => 1 ),
1614 : array( 'lhs' => 101, 'rhs' => 3 ),
1615 : array( 'lhs' => 101, 'rhs' => 3 ),
1616 : array( 'lhs' => 101, 'rhs' => 3 ),
1617 : array( 'lhs' => 101, 'rhs' => 3 ),
1618 : array( 'lhs' => 101, 'rhs' => 3 ),
1619 : array( 'lhs' => 101, 'rhs' => 3 ),
1620 : array( 'lhs' => 101, 'rhs' => 2 ),
1621 : array( 'lhs' => 101, 'rhs' => 2 ),
1622 : array( 'lhs' => 101, 'rhs' => 3 ),
1623 : array( 'lhs' => 101, 'rhs' => 3 ),
1624 : array( 'lhs' => 101, 'rhs' => 2 ),
1625 : array( 'lhs' => 101, 'rhs' => 2 ),
1626 : array( 'lhs' => 101, 'rhs' => 3 ),
1627 : array( 'lhs' => 101, 'rhs' => 3 ),
1628 : array( 'lhs' => 102, 'rhs' => 1 ),
1629 : array( 'lhs' => 102, 'rhs' => 1 ),
1630 : array( 'lhs' => 102, 'rhs' => 1 ),
1631 : array( 'lhs' => 102, 'rhs' => 1 ),
1632 : array( 'lhs' => 102, 'rhs' => 1 ),
1633 : array( 'lhs' => 102, 'rhs' => 1 ),
1634 : array( 'lhs' => 102, 'rhs' => 1 ),
1635 : array( 'lhs' => 102, 'rhs' => 1 ),
1636 : array( 'lhs' => 103, 'rhs' => 1 ),
1637 : array( 'lhs' => 103, 'rhs' => 1 ),
1638 : array( 'lhs' => 86, 'rhs' => 3 ),
1639 : array( 'lhs' => 104, 'rhs' => 1 ),
1640 : array( 'lhs' => 104, 'rhs' => 3 ),
1641 : array( 'lhs' => 104, 'rhs' => 0 ),
1642 : array( 'lhs' => 105, 'rhs' => 1 ),
1643 : array( 'lhs' => 105, 'rhs' => 3 ),
1644 : array( 'lhs' => 105, 'rhs' => 3 ),
1645 : array( 'lhs' => 91, 'rhs' => 2 ),
1646 : array( 'lhs' => 91, 'rhs' => 1 ),
1647 : array( 'lhs' => 106, 'rhs' => 3 ),
1648 : array( 'lhs' => 106, 'rhs' => 3 ),
1649 : array( 'lhs' => 106, 'rhs' => 2 ),
1650 : array( 'lhs' => 106, 'rhs' => 3 ),
1651 : array( 'lhs' => 106, 'rhs' => 1 ),
1652 : array( 'lhs' => 73, 'rhs' => 2 ),
1653 : array( 'lhs' => 73, 'rhs' => 1 ),
1654 : array( 'lhs' => 107, 'rhs' => 1 ),
1655 : array( 'lhs' => 107, 'rhs' => 1 ),
1656 : );
1657 :
1658 : /**
1659 : * The following table contains a mapping of reduce action to method name
1660 : * that handles the reduction.
1661 : *
1662 : * If a rule is not set, it has no handler.
1663 : */
1664 : static public $yyReduceMap = array(
1665 : 0 => 0,
1666 : 39 => 0,
1667 : 45 => 0,
1668 : 46 => 0,
1669 : 48 => 0,
1670 : 49 => 0,
1671 : 50 => 0,
1672 : 65 => 0,
1673 : 129 => 0,
1674 : 1 => 1,
1675 : 35 => 1,
1676 : 38 => 1,
1677 : 43 => 1,
1678 : 44 => 1,
1679 : 77 => 1,
1680 : 100 => 1,
1681 : 136 => 1,
1682 : 143 => 1,
1683 : 144 => 1,
1684 : 145 => 1,
1685 : 2 => 2,
1686 : 68 => 2,
1687 : 135 => 2,
1688 : 142 => 2,
1689 : 3 => 3,
1690 : 4 => 4,
1691 : 5 => 5,
1692 : 6 => 6,
1693 : 7 => 7,
1694 : 8 => 8,
1695 : 9 => 9,
1696 : 10 => 10,
1697 : 11 => 11,
1698 : 12 => 12,
1699 : 13 => 13,
1700 : 14 => 14,
1701 : 15 => 15,
1702 : 16 => 16,
1703 : 17 => 17,
1704 : 18 => 18,
1705 : 19 => 19,
1706 : 20 => 20,
1707 : 21 => 21,
1708 : 22 => 22,
1709 : 23 => 23,
1710 : 24 => 24,
1711 : 28 => 24,
1712 : 92 => 24,
1713 : 132 => 24,
1714 : 25 => 25,
1715 : 26 => 26,
1716 : 27 => 27,
1717 : 29 => 29,
1718 : 30 => 30,
1719 : 31 => 31,
1720 : 32 => 32,
1721 : 33 => 33,
1722 : 34 => 34,
1723 : 36 => 36,
1724 : 37 => 37,
1725 : 40 => 40,
1726 : 41 => 41,
1727 : 42 => 42,
1728 : 47 => 47,
1729 : 51 => 51,
1730 : 52 => 52,
1731 : 53 => 53,
1732 : 55 => 53,
1733 : 54 => 54,
1734 : 56 => 56,
1735 : 57 => 57,
1736 : 58 => 58,
1737 : 59 => 59,
1738 : 60 => 60,
1739 : 61 => 61,
1740 : 62 => 62,
1741 : 63 => 63,
1742 : 64 => 64,
1743 : 66 => 66,
1744 : 67 => 67,
1745 : 69 => 69,
1746 : 97 => 69,
1747 : 70 => 70,
1748 : 71 => 71,
1749 : 72 => 72,
1750 : 73 => 73,
1751 : 75 => 73,
1752 : 74 => 74,
1753 : 76 => 76,
1754 : 78 => 78,
1755 : 79 => 79,
1756 : 80 => 80,
1757 : 102 => 80,
1758 : 81 => 81,
1759 : 82 => 82,
1760 : 83 => 83,
1761 : 84 => 84,
1762 : 85 => 85,
1763 : 86 => 86,
1764 : 87 => 87,
1765 : 88 => 88,
1766 : 89 => 89,
1767 : 90 => 90,
1768 : 91 => 91,
1769 : 93 => 93,
1770 : 94 => 94,
1771 : 95 => 95,
1772 : 96 => 96,
1773 : 98 => 98,
1774 : 99 => 99,
1775 : 101 => 101,
1776 : 103 => 103,
1777 : 104 => 104,
1778 : 107 => 104,
1779 : 105 => 105,
1780 : 106 => 106,
1781 : 108 => 108,
1782 : 109 => 109,
1783 : 110 => 110,
1784 : 115 => 110,
1785 : 111 => 111,
1786 : 114 => 111,
1787 : 112 => 112,
1788 : 117 => 112,
1789 : 113 => 113,
1790 : 116 => 113,
1791 : 118 => 118,
1792 : 119 => 119,
1793 : 120 => 120,
1794 : 121 => 121,
1795 : 122 => 122,
1796 : 123 => 123,
1797 : 124 => 124,
1798 : 125 => 125,
1799 : 126 => 126,
1800 : 127 => 127,
1801 : 128 => 128,
1802 : 130 => 130,
1803 : 131 => 131,
1804 : 133 => 133,
1805 : 134 => 134,
1806 : 137 => 137,
1807 : 138 => 138,
1808 : 139 => 139,
1809 : 140 => 140,
1810 : 141 => 141,
1811 : );
1812 : /* Beginning here are the reduction cases. A typical example
1813 : ** follows:
1814 : ** #line <lineno> <grammarfile>
1815 : ** function yy_r0($yymsp){ ... } // User supplied code
1816 : ** #line <lineno> <thisfile>
1817 : */
1818 : #line 73 "internal.templateparser.y"
1819 315 : function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1820 : #line 1825 "internal.templateparser.php"
1821 : #line 79 "internal.templateparser.y"
1822 316 : function yy_r1(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1823 : #line 1828 "internal.templateparser.php"
1824 : #line 81 "internal.templateparser.y"
1825 288 : function yy_r2(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
1826 : #line 1831 "internal.templateparser.php"
1827 : #line 87 "internal.templateparser.y"
1828 282 : function yy_r3(){if ($this->compiler->has_code) {
1829 282 : $tmp =''; foreach ($this->prefix_code as $code) {$tmp.=$code;} $this->prefix_code=array();
1830 282 : $this->_retvalue = $this->cacher->processNocacheCode($tmp.$this->yystack[$this->yyidx + 0]->minor, $this->compiler,$this->nocache,true);
1831 282 : } $this->nocache=false; }
1832 : #line 1837 "internal.templateparser.php"
1833 : #line 92 "internal.templateparser.y"
1834 8 : function yy_r4(){ $this->_retvalue = ''; }
1835 : #line 1840 "internal.templateparser.php"
1836 : #line 95 "internal.templateparser.y"
1837 0 : function yy_r5(){$this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + -1]->minor, $this->compiler,false,false); }
1838 : #line 1843 "internal.templateparser.php"
1839 : #line 97 "internal.templateparser.y"
1840 0 : function yy_r6(){$this->_retvalue = $this->cacher->processNocacheCode($this->smarty->left_delimiter, $this->compiler,false,false); }
1841 : #line 1846 "internal.templateparser.php"
1842 : #line 99 "internal.templateparser.y"
1843 0 : function yy_r7(){$this->_retvalue = $this->cacher->processNocacheCode($this->smarty->right_delimiter, $this->compiler,false,false); }
1844 : #line 1849 "internal.templateparser.php"
1845 : #line 101 "internal.templateparser.y"
1846 5 : function yy_r8(){if (!$this->template->security) {
1847 2 : $this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + 0]->minor, $this->compiler, false,true);
1848 5 : } elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_QUOTE) {
1849 1 : $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES), $this->compiler, false, false);
1850 3 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_PASSTHRU || $this->smarty->security_policy->php_handling == SMARTY_PHP_ALLOW) {
1851 1 : $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '".$this->yystack[$this->yyidx + 0]->minor."';?>\n", $this->compiler, false, false);
1852 2 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_REMOVE) {
1853 1 : $this->_retvalue = '';
1854 5 : } }
1855 : #line 1860 "internal.templateparser.php"
1856 : #line 111 "internal.templateparser.y"
1857 4 : function yy_r9(){if (!$this->template->security) {
1858 1 : $this->_retvalue = $this->cacher->processNocacheCode('<?php '.$this->yystack[$this->yyidx + -1]->minor.' ?>', $this->compiler, false,true);
1859 4 : } elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_QUOTE) {
1860 1 : $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?php '.$this->yystack[$this->yyidx + -1]->minor.' ?>', ENT_QUOTES), $this->compiler, false, false);
1861 3 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_PASSTHRU || $this->smarty->security_policy->php_handling == SMARTY_PHP_ALLOW) {
1862 1 : $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?php ".$this->yystack[$this->yyidx + -1]->minor." ?>';?>\n", $this->compiler, false, false);
1863 2 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_REMOVE) {
1864 1 : $this->_retvalue = '';
1865 4 : } }
1866 : #line 1871 "internal.templateparser.php"
1867 : #line 121 "internal.templateparser.y"
1868 1 : function yy_r10(){if (!$this->template->security) {
1869 1 : $this->_retvalue = $this->cacher->processNocacheCode($this->compiler->compileTag('print_expression',array('value'=>$this->yystack[$this->yyidx + -1]->minor)), $this->compiler, false,true);
1870 1 : } elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_QUOTE) {
1871 0 : $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?php '.t.' ?>', ENT_QUOTES), $this->compiler, false, false);
1872 0 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_PASSTHRU || $this->smarty->security_policy->php_handling == SMARTY_PHP_ALLOW) {
1873 0 : $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?php ".t." ?>';?>\n", $this->compiler, false, false);
1874 0 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_REMOVE) {
1875 0 : $this->_retvalue = '';
1876 1 : } }
1877 : #line 1882 "internal.templateparser.php"
1878 : #line 131 "internal.templateparser.y"
1879 3 : function yy_r11(){$this->_retvalue = $this->cacher->processNocacheCode("<?php echo '".$this->yystack[$this->yyidx + 0]->minor."';?>\n", $this->compiler, true, true); }
1880 : #line 1885 "internal.templateparser.php"
1881 : #line 133 "internal.templateparser.y"
1882 175 : function yy_r12(){$this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + 0]->minor, $this->compiler,false,false); }
1883 : #line 1888 "internal.templateparser.php"
1884 : #line 140 "internal.templateparser.y"
1885 175 : function yy_r13(){ $this->_retvalue = $this->compiler->compileTag('print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
1886 : #line 1891 "internal.templateparser.php"
1887 : #line 142 "internal.templateparser.y"
1888 42 : function yy_r14(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor)); }
1889 : #line 1894 "internal.templateparser.php"
1890 : #line 144 "internal.templateparser.y"
1891 176 : function yy_r15(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor); }
1892 : #line 1897 "internal.templateparser.php"
1893 : #line 146 "internal.templateparser.y"
1894 2 : function yy_r16(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
1895 : #line 1900 "internal.templateparser.php"
1896 : #line 148 "internal.templateparser.y"
1897 1 : function yy_r17(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
1898 1 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -3]->minor[0],'modifier')) {
1899 1 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->".$this->yystack[$this->yyidx + -3]->minor[0] . "(array(ob_get_clean()". $this->yystack[$this->yyidx + -2]->minor ."),'modifier');?>";
1900 1 : } else {
1901 0 : if ($this->yystack[$this->yyidx + -3]->minor[0] == 'isset' || $this->yystack[$this->yyidx + -3]->minor[0] == 'empty' || is_callable($this->yystack[$this->yyidx + -3]->minor[0])) {
1902 0 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -3]->minor[0], $this->compiler)) {
1903 0 : $this->_retvalue .= $this->yystack[$this->yyidx + -3]->minor[0] . "(ob_get_clean()". $this->yystack[$this->yyidx + -2]->minor .");?>";
1904 0 : }
1905 0 : } else {
1906 0 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -3]->minor[0] . "\"");
1907 : }
1908 : }
1909 1 : }
1910 : #line 1915 "internal.templateparser.php"
1911 : #line 162 "internal.templateparser.y"
1912 134 : function yy_r18(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor); }
1913 : #line 1918 "internal.templateparser.php"
1914 : #line 164 "internal.templateparser.y"
1915 1 : function yy_r19(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor)); }
1916 : #line 1921 "internal.templateparser.php"
1917 : #line 166 "internal.templateparser.y"
1918 73 : function yy_r20(){if (!in_array($this->yystack[$this->yyidx + -3]->minor,array('if','elseif','while'))) {
1919 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
1920 0 : }
1921 73 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); }
1922 : #line 1927 "internal.templateparser.php"
1923 : #line 170 "internal.templateparser.y"
1924 3 : function yy_r21(){ if (!in_array($this->yystack[$this->yyidx + -3]->minor,array('if','elseif','while'))) {
1925 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
1926 0 : }
1927 3 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); }
1928 : #line 1933 "internal.templateparser.php"
1929 : #line 175 "internal.templateparser.y"
1930 : function yy_r22(){
1931 7 : if ($this->yystack[$this->yyidx + -9]->minor != 'for') {
1932 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -9]->minor . "\"");
1933 0 : }
1934 7 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('start'=>$this->yystack[$this->yyidx + -7]->minor,'ifexp'=>$this->yystack[$this->yyidx + -5]->minor,'varloop'=>$this->yystack[$this->yyidx + -2]->minor,'loop'=>$this->yystack[$this->yyidx + -1]->minor)); }
1935 : #line 1940 "internal.templateparser.php"
1936 : #line 180 "internal.templateparser.y"
1937 1 : function yy_r23(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; }
1938 : #line 1943 "internal.templateparser.php"
1939 : #line 181 "internal.templateparser.y"
1940 120 : function yy_r24(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1941 : #line 1946 "internal.templateparser.php"
1942 : #line 183 "internal.templateparser.y"
1943 : function yy_r25(){
1944 16 : if ($this->yystack[$this->yyidx + -6]->minor != 'foreach') {
1945 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -6]->minor . "\"");
1946 0 : }
1947 16 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
1948 : #line 1953 "internal.templateparser.php"
1949 : #line 188 "internal.templateparser.y"
1950 : function yy_r26(){
1951 1 : if ($this->yystack[$this->yyidx + -6]->minor != 'foreach') {
1952 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -6]->minor . "\"");
1953 0 : }
1954 1 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
1955 : #line 1960 "internal.templateparser.php"
1956 : #line 198 "internal.templateparser.y"
1957 68 : function yy_r27(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
1958 : #line 1963 "internal.templateparser.php"
1959 : #line 202 "internal.templateparser.y"
1960 260 : function yy_r29(){ $this->_retvalue = array(); }
1961 : #line 1966 "internal.templateparser.php"
1962 : #line 205 "internal.templateparser.y"
1963 101 : function yy_r30(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); }
1964 : #line 1969 "internal.templateparser.php"
1965 : #line 210 "internal.templateparser.y"
1966 7 : function yy_r31(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); }
1967 : #line 1972 "internal.templateparser.php"
1968 : #line 211 "internal.templateparser.y"
1969 1 : function yy_r32(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; }
1970 : #line 1975 "internal.templateparser.php"
1971 : #line 213 "internal.templateparser.y"
1972 10 : function yy_r33(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); }
1973 : #line 1978 "internal.templateparser.php"
1974 : #line 219 "internal.templateparser.y"
1975 72 : function yy_r34(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
1976 : #line 1981 "internal.templateparser.php"
1977 : #line 223 "internal.templateparser.y"
1978 1 : function yy_r36(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; }
1979 : #line 1984 "internal.templateparser.php"
1980 : #line 224 "internal.templateparser.y"
1981 : function yy_r37(){
1982 15 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -1]->minor[0],'modifier')) {
1983 7 : $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->".$this->yystack[$this->yyidx + -1]->minor[0] . "(array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor ."),'modifier')";
1984 7 : } else {
1985 9 : if ($this->yystack[$this->yyidx + -1]->minor[0] == 'isset' || $this->yystack[$this->yyidx + -1]->minor[0] == 'empty' || is_callable($this->yystack[$this->yyidx + -1]->minor[0])) {
1986 8 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -1]->minor[0], $this->compiler)) {
1987 7 : $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor[0] . "(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor .")";
1988 7 : }
1989 7 : } else {
1990 1 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -1]->minor[0] . "\"");
1991 : }
1992 : }
1993 13 : }
1994 : #line 1999 "internal.templateparser.php"
1995 : #line 242 "internal.templateparser.y"
1996 1 : function yy_r40(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
1997 : #line 2002 "internal.templateparser.php"
1998 : #line 244 "internal.templateparser.y"
1999 12 : function yy_r41(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor; }
2000 : #line 2005 "internal.templateparser.php"
2001 : #line 246 "internal.templateparser.y"
2002 0 : function yy_r42(){ $this->_retvalue = '('. $this->yystack[$this->yyidx + -2]->minor . ').(' . $this->yystack[$this->yyidx + 0]->minor. ')'; }
2003 : #line 2008 "internal.templateparser.php"
2004 : #line 263 "internal.templateparser.y"
2005 0 : function yy_r47(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
2006 : #line 2011 "internal.templateparser.php"
2007 : #line 272 "internal.templateparser.y"
2008 1 : function yy_r51(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
2009 : #line 2014 "internal.templateparser.php"
2010 : #line 275 "internal.templateparser.y"
2011 63 : function yy_r52(){ $this->_retvalue = "'".$this->yystack[$this->yyidx + -1]->minor."'"; }
2012 : #line 2017 "internal.templateparser.php"
2013 : #line 276 "internal.templateparser.y"
2014 2 : function yy_r53(){ $this->_retvalue = "''"; }
2015 : #line 2020 "internal.templateparser.php"
2016 : #line 278 "internal.templateparser.y"
2017 43 : function yy_r54(){ $this->_retvalue = "'".str_replace('\"','"',$this->yystack[$this->yyidx + -1]->minor)."'"; }
2018 : #line 2023 "internal.templateparser.php"
2019 : #line 282 "internal.templateparser.y"
2020 1 : function yy_r56(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
2021 : #line 2026 "internal.templateparser.php"
2022 : #line 283 "internal.templateparser.y"
2023 2 : function yy_r57(){ $this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')'; }
2024 : #line 2029 "internal.templateparser.php"
2025 : #line 285 "internal.templateparser.y"
2026 0 : function yy_r58(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2027 : #line 2032 "internal.templateparser.php"
2028 : #line 286 "internal.templateparser.y"
2029 0 : function yy_r59(){ $this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -7]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor; }
2030 : #line 2035 "internal.templateparser.php"
2031 : #line 288 "internal.templateparser.y"
2032 1 : function yy_r60(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
2033 : #line 2038 "internal.templateparser.php"
2034 : #line 290 "internal.templateparser.y"
2035 1 : function yy_r61(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2036 : #line 2041 "internal.templateparser.php"
2037 : #line 292 "internal.templateparser.y"
2038 0 : function yy_r62(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.'::$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2039 : #line 2044 "internal.templateparser.php"
2040 : #line 299 "internal.templateparser.y"
2041 153 : function yy_r63(){ if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('internal_smarty_var',$this->yystack[$this->yyidx + 0]->minor['index']);} else {
2042 153 : $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['index']; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"))->nocache;} }
2043 : #line 2048 "internal.templateparser.php"
2044 : #line 302 "internal.templateparser.y"
2045 10 : function yy_r64(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"))->nocache; }
2046 : #line 2051 "internal.templateparser.php"
2047 : #line 306 "internal.templateparser.y"
2048 12 : function yy_r66(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; }
2049 : #line 2054 "internal.templateparser.php"
2050 : #line 309 "internal.templateparser.y"
2051 154 : function yy_r67(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'index'=>$this->yystack[$this->yyidx + 0]->minor); }
2052 : #line 2057 "internal.templateparser.php"
2053 : #line 317 "internal.templateparser.y"
2054 161 : function yy_r69(){return; }
2055 : #line 2060 "internal.templateparser.php"
2056 : #line 321 "internal.templateparser.y"
2057 10 : function yy_r70(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; }
2058 : #line 2063 "internal.templateparser.php"
2059 : #line 322 "internal.templateparser.y"
2060 1 : function yy_r71(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; }
2061 : #line 2066 "internal.templateparser.php"
2062 : #line 323 "internal.templateparser.y"
2063 0 : function yy_r72(){ $this->_retvalue = "[".$this->yystack[$this->yyidx + 0]->minor."]"; }
2064 : #line 2069 "internal.templateparser.php"
2065 : #line 324 "internal.templateparser.y"
2066 13 : function yy_r73(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; }
2067 : #line 2072 "internal.templateparser.php"
2068 : #line 326 "internal.templateparser.y"
2069 5 : function yy_r74(){ $this->_retvalue = '['.$this->compiler->compileTag('internal_smarty_var','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; }
2070 : #line 2075 "internal.templateparser.php"
2071 : #line 330 "internal.templateparser.y"
2072 3 : function yy_r76(){$this->_retvalue = ''; }
2073 : #line 2078 "internal.templateparser.php"
2074 : #line 338 "internal.templateparser.y"
2075 3 : function yy_r78(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
2076 : #line 2081 "internal.templateparser.php"
2077 : #line 340 "internal.templateparser.y"
2078 156 : function yy_r79(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2079 : #line 2084 "internal.templateparser.php"
2080 : #line 342 "internal.templateparser.y"
2081 8 : function yy_r80(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; }
2082 : #line 2087 "internal.templateparser.php"
2083 : #line 347 "internal.templateparser.y"
2084 0 : function yy_r81(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->value'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"))->nocache; }
2085 : #line 2090 "internal.templateparser.php"
2086 : #line 349 "internal.templateparser.y"
2087 0 : function yy_r82(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
2088 : #line 2093 "internal.templateparser.php"
2089 : #line 351 "internal.templateparser.y"
2090 0 : function yy_r83(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2091 : #line 2096 "internal.templateparser.php"
2092 : #line 353 "internal.templateparser.y"
2093 0 : function yy_r84(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2094 : #line 2099 "internal.templateparser.php"
2095 : #line 354 "internal.templateparser.y"
2096 0 : function yy_r85(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2097 : #line 2102 "internal.templateparser.php"
2098 : #line 355 "internal.templateparser.y"
2099 0 : function yy_r86(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2100 : #line 2105 "internal.templateparser.php"
2101 : #line 356 "internal.templateparser.y"
2102 0 : function yy_r87(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2103 : #line 2108 "internal.templateparser.php"
2104 : #line 358 "internal.templateparser.y"
2105 0 : function yy_r88(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; }
2106 : #line 2111 "internal.templateparser.php"
2107 : #line 364 "internal.templateparser.y"
2108 10 : function yy_r89(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
2109 8 : if ($this->yystack[$this->yyidx + -3]->minor == 'isset' || $this->yystack[$this->yyidx + -3]->minor == 'empty' || $this->yystack[$this->yyidx + -3]->minor == 'array' || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
2110 8 : $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";
2111 8 : } else {
2112 0 : $this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2113 : }
2114 8 : } }
2115 : #line 2120 "internal.templateparser.php"
2116 : #line 375 "internal.templateparser.y"
2117 1 : function yy_r90(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
2118 : #line 2123 "internal.templateparser.php"
2119 : #line 379 "internal.templateparser.y"
2120 0 : function yy_r91(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; }
2121 : #line 2126 "internal.templateparser.php"
2122 : #line 383 "internal.templateparser.y"
2123 1 : function yy_r93(){ return; }
2124 : #line 2129 "internal.templateparser.php"
2125 : #line 388 "internal.templateparser.y"
2126 0 : function yy_r94(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,true); }
2127 : #line 2132 "internal.templateparser.php"
2128 : #line 389 "internal.templateparser.y"
2129 16 : function yy_r95(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,false); }
2130 : #line 2135 "internal.templateparser.php"
2131 : #line 396 "internal.templateparser.y"
2132 8 : function yy_r96(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2133 : #line 2138 "internal.templateparser.php"
2134 : #line 400 "internal.templateparser.y"
2135 7 : function yy_r98(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; }
2136 : #line 2141 "internal.templateparser.php"
2137 : #line 401 "internal.templateparser.y"
2138 1 : function yy_r99(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2139 : #line 2144 "internal.templateparser.php"
2140 : #line 408 "internal.templateparser.y"
2141 2 : function yy_r101(){$this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
2142 : #line 2147 "internal.templateparser.php"
2143 : #line 413 "internal.templateparser.y"
2144 24 : function yy_r103(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor; }
2145 : #line 2150 "internal.templateparser.php"
2146 : #line 414 "internal.templateparser.y"
2147 57 : function yy_r104(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2148 : #line 2153 "internal.templateparser.php"
2149 : #line 415 "internal.templateparser.y"
2150 0 : function yy_r105(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; }
2151 : #line 2156 "internal.templateparser.php"
2152 : #line 416 "internal.templateparser.y"
2153 0 : function yy_r106(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; }
2154 : #line 2159 "internal.templateparser.php"
2155 : #line 418 "internal.templateparser.y"
2156 1 : function yy_r108(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2157 : #line 2162 "internal.templateparser.php"
2158 : #line 419 "internal.templateparser.y"
2159 1 : function yy_r109(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2160 : #line 2165 "internal.templateparser.php"
2161 : #line 420 "internal.templateparser.y"
2162 2 : function yy_r110(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
2163 : #line 2168 "internal.templateparser.php"
2164 : #line 421 "internal.templateparser.y"
2165 2 : function yy_r111(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
2166 : #line 2171 "internal.templateparser.php"
2167 : #line 422 "internal.templateparser.y"
2168 1 : function yy_r112(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2169 : #line 2174 "internal.templateparser.php"
2170 : #line 423 "internal.templateparser.y"
2171 3 : function yy_r113(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2172 : #line 2177 "internal.templateparser.php"
2173 : #line 429 "internal.templateparser.y"
2174 7 : function yy_r118(){$this->_retvalue = '=='; }
2175 : #line 2180 "internal.templateparser.php"
2176 : #line 430 "internal.templateparser.y"
2177 4 : function yy_r119(){$this->_retvalue = '!='; }
2178 : #line 2183 "internal.templateparser.php"
2179 : #line 431 "internal.templateparser.y"
2180 13 : function yy_r120(){$this->_retvalue = '>'; }
2181 : #line 2186 "internal.templateparser.php"
2182 : #line 432 "internal.templateparser.y"
2183 26 : function yy_r121(){$this->_retvalue = '<'; }
2184 : #line 2189 "internal.templateparser.php"
2185 : #line 433 "internal.templateparser.y"
2186 7 : function yy_r122(){$this->_retvalue = '>='; }
2187 : #line 2192 "internal.templateparser.php"
2188 : #line 434 "internal.templateparser.y"
2189 4 : function yy_r123(){$this->_retvalue = '<='; }
2190 : #line 2195 "internal.templateparser.php"
2191 : #line 435 "internal.templateparser.y"
2192 3 : function yy_r124(){$this->_retvalue = '==='; }
2193 : #line 2198 "internal.templateparser.php"
2194 : #line 436 "internal.templateparser.y"
2195 0 : function yy_r125(){$this->_retvalue = '!=='; }
2196 : #line 2201 "internal.templateparser.php"
2197 : #line 438 "internal.templateparser.y"
2198 5 : function yy_r126(){$this->_retvalue = '&&'; }
2199 : #line 2204 "internal.templateparser.php"
2200 : #line 439 "internal.templateparser.y"
2201 5 : function yy_r127(){$this->_retvalue = '||'; }
2202 : #line 2207 "internal.templateparser.php"
2203 : #line 444 "internal.templateparser.y"
2204 32 : function yy_r128(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; }
2205 : #line 2210 "internal.templateparser.php"
2206 : #line 446 "internal.templateparser.y"
2207 32 : function yy_r130(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; }
2208 : #line 2213 "internal.templateparser.php"
2209 : #line 447 "internal.templateparser.y"
2210 0 : function yy_r131(){ return; }
2211 : #line 2216 "internal.templateparser.php"
2212 : #line 449 "internal.templateparser.y"
2213 3 : function yy_r133(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; }
2214 : #line 2219 "internal.templateparser.php"
2215 : #line 450 "internal.templateparser.y"
2216 1 : function yy_r134(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; }
2217 : #line 2222 "internal.templateparser.php"
2218 : #line 457 "internal.templateparser.y"
2219 0 : function yy_r137(){$this->_retvalue = "`".$this->yystack[$this->yyidx + -1]->minor."`"; }
2220 : #line 2225 "internal.templateparser.php"
2221 : #line 458 "internal.templateparser.y"
2222 1 : function yy_r138(){$this->_retvalue = "'.".$this->yystack[$this->yyidx + -1]->minor.".'"; }
2223 : #line 2228 "internal.templateparser.php"
2224 : #line 459 "internal.templateparser.y"
2225 1 : function yy_r139(){$this->_retvalue = "'.".'$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + 0]->minor .'\')->value'.".'"; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"))->nocache; }
2226 : #line 2231 "internal.templateparser.php"
2227 : #line 460 "internal.templateparser.y"
2228 2 : function yy_r140(){$this->_retvalue = "'.(".$this->yystack[$this->yyidx + -1]->minor.").'"; }
2229 : #line 2234 "internal.templateparser.php"
2230 : #line 461 "internal.templateparser.y"
2231 43 : function yy_r141(){$this->_retvalue = addcslashes($this->yystack[$this->yyidx + 0]->minor,"'"); }
2232 : #line 2237 "internal.templateparser.php"
2233 :
2234 : /**
2235 : * placeholder for the left hand side in a reduce operation.
2236 : *
2237 : * For a parser with a rule like this:
2238 : * <pre>
2239 : * rule(A) ::= B. { A = 1; }
2240 : * </pre>
2241 : *
2242 : * The parser will translate to something like:
2243 : *
2244 : * <code>
2245 : * function yy_r0(){$this->_retvalue = 1;}
2246 : * </code>
2247 : */
2248 : private $_retvalue;
2249 :
2250 : /**
2251 : * Perform a reduce action and the shift that must immediately
2252 : * follow the reduce.
2253 : *
2254 : * For a rule such as:
2255 : *
2256 : * <pre>
2257 : * A ::= B blah C. { dosomething(); }
2258 : * </pre>
2259 : *
2260 : * This function will first call the action, if any, ("dosomething();" in our
2261 : * example), and then it will pop three states from the stack,
2262 : * one for each entry on the right-hand side of the expression
2263 : * (B, blah, and C in our example rule), and then push the result of the action
2264 : * back on to the stack with the resulting state reduced to (as described in the .out
2265 : * file)
2266 : * @param int Number of the rule by which to reduce
2267 : */
2268 : function yy_reduce($yyruleno)
2269 : {
2270 : //int $yygoto; /* The next state */
2271 : //int $yyact; /* The next action */
2272 : //mixed $yygotominor; /* The LHS of the rule reduced */
2273 : //TP_yyStackEntry $yymsp; /* The top of the parser's stack */
2274 : //int $yysize; /* Amount to pop the stack */
2275 320 : $yymsp = $this->yystack[$this->yyidx];
2276 320 : if (self::$yyTraceFILE && $yyruleno >= 0
2277 320 : && $yyruleno < count(self::$yyRuleName)) {
2278 0 : fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
2279 0 : self::$yyTracePrompt, $yyruleno,
2280 0 : self::$yyRuleName[$yyruleno]);
2281 0 : }
2282 :
2283 320 : $this->_retvalue = $yy_lefthand_side = null;
2284 320 : if (array_key_exists($yyruleno, self::$yyReduceMap)) {
2285 : // call the action
2286 320 : $this->_retvalue = null;
2287 320 : $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
2288 320 : $yy_lefthand_side = $this->_retvalue;
2289 320 : }
2290 320 : $yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
2291 320 : $yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
2292 320 : $this->yyidx -= $yysize;
2293 320 : for($i = $yysize; $i; $i--) {
2294 : // pop all of the right-hand side parameters
2295 316 : array_pop($this->yystack);
2296 316 : }
2297 320 : $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
2298 320 : if ($yyact < self::YYNSTATE) {
2299 : /* If we are not debugging and the reduce action popped at least
2300 : ** one element off the stack, then we can push the new element back
2301 : ** onto the stack here, and skip the stack overflow test in yy_shift().
2302 : ** That gives a significant speed improvement. */
2303 320 : if (!self::$yyTraceFILE && $yysize) {
2304 316 : $this->yyidx++;
2305 316 : $x = new TP_yyStackEntry;
2306 316 : $x->stateno = $yyact;
2307 316 : $x->major = $yygoto;
2308 316 : $x->minor = $yy_lefthand_side;
2309 316 : $this->yystack[$this->yyidx] = $x;
2310 316 : } else {
2311 266 : $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
2312 : }
2313 320 : } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
2314 309 : $this->yy_accept();
2315 309 : }
2316 320 : }
2317 :
2318 : /**
2319 : * The following code executes when the parse fails
2320 : *
2321 : * Code from %parse_fail is inserted here
2322 : */
2323 : function yy_parse_failed()
2324 : {
2325 0 : if (self::$yyTraceFILE) {
2326 0 : fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
2327 0 : }
2328 0 : while ($this->yyidx >= 0) {
2329 0 : $this->yy_pop_parser_stack();
2330 0 : }
2331 : /* Here code is inserted which will be executed whenever the
2332 : ** parser fails */
2333 0 : }
2334 :
2335 : /**
2336 : * The following code executes when a syntax error first occurs.
2337 : *
2338 : * %syntax_error code is inserted here
2339 : * @param int The major type of the error token
2340 : * @param mixed The minor type of the error token
2341 : */
2342 : function yy_syntax_error($yymajor, $TOKEN)
2343 : {
2344 : #line 55 "internal.templateparser.y"
2345 :
2346 1 : $this->internalError = true;
2347 1 : $this->yymajor = $yymajor;
2348 1 : $this->compiler->trigger_template_error();
2349 : #line 2355 "internal.templateparser.php"
2350 0 : }
2351 :
2352 : /**
2353 : * The following is executed when the parser accepts
2354 : *
2355 : * %parse_accept code is inserted here
2356 : */
2357 : function yy_accept()
2358 : {
2359 309 : if (self::$yyTraceFILE) {
2360 0 : fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
2361 0 : }
2362 309 : while ($this->yyidx >= 0) {
2363 309 : $stack = $this->yy_pop_parser_stack();
2364 309 : }
2365 : /* Here code is inserted which will be executed whenever the
2366 : ** parser accepts */
2367 : #line 47 "internal.templateparser.y"
2368 :
2369 309 : $this->successful = !$this->internalError;
2370 309 : $this->internalError = false;
2371 309 : $this->retvalue = $this->_retvalue;
2372 : //echo $this->retvalue."\n\n";
2373 : #line 2380 "internal.templateparser.php"
2374 309 : }
2375 :
2376 : /**
2377 : * The main parser program.
2378 : *
2379 : * The first argument is the major token number. The second is
2380 : * the token value string as scanned from the input.
2381 : *
2382 : * @param int the token number
2383 : * @param mixed the token value
2384 : * @param mixed any extra arguments that should be passed to handlers
2385 : */
2386 : function doParse($yymajor, $yytokenvalue)
2387 : {
2388 : // $yyact; /* The parser action. */
2389 : // $yyendofinput; /* True if we are at the end of input */
2390 321 : $yyerrorhit = 0; /* True if yymajor has invoked an error */
2391 :
2392 : /* (re)initialize the parser, if necessary */
2393 321 : if ($this->yyidx === null || $this->yyidx < 0) {
2394 : /* if ($yymajor == 0) return; // not sure why this was here... */
2395 321 : $this->yyidx = 0;
2396 321 : $this->yyerrcnt = -1;
2397 321 : $x = new TP_yyStackEntry;
2398 321 : $x->stateno = 0;
2399 321 : $x->major = 0;
2400 321 : $this->yystack = array();
2401 321 : array_push($this->yystack, $x);
2402 321 : }
2403 321 : $yyendofinput = ($yymajor==0);
2404 :
2405 321 : if (self::$yyTraceFILE) {
2406 0 : fprintf(self::$yyTraceFILE, "%sInput %s\n",
2407 0 : self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2408 0 : }
2409 :
2410 : do {
2411 321 : $yyact = $this->yy_find_shift_action($yymajor);
2412 321 : if ($yymajor < self::YYERRORSYMBOL &&
2413 321 : !$this->yy_is_expected_token($yymajor)) {
2414 : // force a syntax error
2415 0 : $yyact = self::YY_ERROR_ACTION;
2416 0 : }
2417 321 : if ($yyact < self::YYNSTATE) {
2418 321 : $this->yy_shift($yyact, $yymajor, $yytokenvalue);
2419 321 : $this->yyerrcnt--;
2420 321 : if ($yyendofinput && $this->yyidx >= 0) {
2421 0 : $yymajor = 0;
2422 0 : } else {
2423 321 : $yymajor = self::YYNOCODE;
2424 : }
2425 321 : } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
2426 320 : $this->yy_reduce($yyact - self::YYNSTATE);
2427 321 : } elseif ($yyact == self::YY_ERROR_ACTION) {
2428 1 : if (self::$yyTraceFILE) {
2429 0 : fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
2430 0 : self::$yyTracePrompt);
2431 0 : }
2432 1 : if (self::YYERRORSYMBOL) {
2433 : /* A syntax error has occurred.
2434 : ** The response to an error depends upon whether or not the
2435 : ** grammar defines an error token "ERROR".
2436 : **
2437 : ** This is what we do if the grammar does define ERROR:
2438 : **
2439 : ** * Call the %syntax_error function.
2440 : **
2441 : ** * Begin popping the stack until we enter a state where
2442 : ** it is legal to shift the error symbol, then shift
2443 : ** the error symbol.
2444 : **
2445 : ** * Set the error count to three.
2446 : **
2447 : ** * Begin accepting and shifting new tokens. No new error
2448 : ** processing will occur until three tokens have been
2449 : ** shifted successfully.
2450 : **
2451 : */
2452 1 : if ($this->yyerrcnt < 0) {
2453 1 : $this->yy_syntax_error($yymajor, $yytokenvalue);
2454 0 : }
2455 0 : $yymx = $this->yystack[$this->yyidx]->major;
2456 0 : if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
2457 0 : if (self::$yyTraceFILE) {
2458 0 : fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
2459 0 : self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2460 0 : }
2461 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2462 0 : $yymajor = self::YYNOCODE;
2463 0 : } else {
2464 0 : while ($this->yyidx >= 0 &&
2465 0 : $yymx != self::YYERRORSYMBOL &&
2466 0 : ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
2467 0 : ){
2468 0 : $this->yy_pop_parser_stack();
2469 0 : }
2470 0 : if ($this->yyidx < 0 || $yymajor==0) {
2471 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2472 0 : $this->yy_parse_failed();
2473 0 : $yymajor = self::YYNOCODE;
2474 0 : } elseif ($yymx != self::YYERRORSYMBOL) {
2475 0 : $u2 = 0;
2476 0 : $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
2477 0 : }
2478 : }
2479 0 : $this->yyerrcnt = 3;
2480 0 : $yyerrorhit = 1;
2481 0 : } else {
2482 : /* YYERRORSYMBOL is not defined */
2483 : /* This is what we do if the grammar does not define ERROR:
2484 : **
2485 : ** * Report an error message, and throw away the input token.
2486 : **
2487 : ** * If the input token is $, then fail the parse.
2488 : **
2489 : ** As before, subsequent error messages are suppressed until
2490 : ** three input tokens have been successfully shifted.
2491 : */
2492 0 : if ($this->yyerrcnt <= 0) {
2493 0 : $this->yy_syntax_error($yymajor, $yytokenvalue);
2494 0 : }
2495 0 : $this->yyerrcnt = 3;
2496 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2497 0 : if ($yyendofinput) {
2498 0 : $this->yy_parse_failed();
2499 0 : }
2500 0 : $yymajor = self::YYNOCODE;
2501 : }
2502 0 : } else {
2503 0 : $this->yy_accept();
2504 0 : $yymajor = self::YYNOCODE;
2505 : }
2506 321 : } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
2507 321 : }
2508 : }
|